Я изначально спросил этот вопрос. Я предположил, что причиной медленного времени загрузки моего пользовательского представления было из-за многослойного отображения нескольких точек зрения или, возможно, из-за некоторой проблемы рекурсии. Однако, вырезав все больше и больше кода, чтобы понять, что будет иметь значение, все сводилось к тому, имел ли я UITextView
подарок или нет. Поскольку явный источник моей проблемы настолько отличается от того, что я ожидал в своем первом вопросе, я решил начать новый вопрос, а не добавлять длительное обновление к старому.
Я установил свой тестовый проект двумя диспетчерами. Кнопка на первом контроллере представления вызовет серию show во второй контроллер представления. На втором контроллере есть мой пользовательский вид. (Используя второй контроллер просмотра, позвольте мне понять, сколько времени потребовалось для загрузки пользовательского представления.)
Пользовательский код просмотра:
import UIKit
@IBDesignable class UIMongolTextView: UIView {
var textView = UITextView() // key line
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override init(frame: CGRect){
super.init(frame: frame)
}
}
Как вы можете видеть, единственное отличие от UIView
заключается в том, что я добавил свойство UITextView
. И это настраиваемое представление загружается очень медленно. Запуск инструмента "Выделения" в "Инструменты" я получаю следующие результаты (счет 997):
Однако, если я прокомментирую строку
//var textView = UITextView()
тогда я пользовательский просмотр загружается очень быстро и имеет только счет 7.
Что здесь происходит? Возможно ли использовать свойство UITextView
в пользовательском представлении и избежать этого медленного времени загрузки?