Сначала я задал этот вопрос. Я предположил, что причиной медленной загрузки моего пользовательского представления было наложение нескольких представлений друг на друга или, возможно, из-за некоторых проблема рекурсии. Однако после того, как я вырезал все больше и больше кода, чтобы увидеть, что будет иметь значение, дело дошло до того, есть ли у меня UITextView
или нет. Поскольку очевидный источник моей проблемы настолько отличается от того, что я ожидал в своем первом вопросе, я решил начать новый вопрос, а не добавлять длинное обновление к старому.
Я настроил свой тестовый проект с двумя контроллерами представления. Кнопка на первом контроллере представления вызывает переход шоу ко второму контроллеру представления. На втором контроллере представления есть мое собственное представление. (Использование второго контроллера представления позволило мне понять, сколько времени ушло на загрузку пользовательского представления.)
Пользовательский код просмотра:
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
в пользовательском представлении и избежать медленной загрузки?
UIView
, а затем приведу его кUITextView
позже? - person Suragch   schedule 11.05.2016