2015-12-13 2 views
3

Чтение Apple documentation на collectionViewUICollectionViewController, оно представляется необязательным, что обозначается ?. Мне кажется странным, как будто есть вероятность, что collectionView может быть nil, а затем UICollectionViewController будет казаться бессмысленным. Что касается tableView из UITableViewController, то Apple Documentation заявляет, что он не может быть nil, так как он помечен !.collectionView optional in UICollectionViewController

Вопрос в том, почему collectionView не является обязательным и что следует учитывать при использовании UICollectionViewController? Должен ли я быть обеспокоен тем, что collectionView будет nil и, кроме того, в какой момент инициализируется collectionView? Спасибо.

ответ

1

Когда контроллер создан, все его виды начинаются как nil, потому что они еще не созданы - iOS ленивые нагрузки, насколько это возможно по соображениям производительности. Когда представления диспетчера представлений полностью загружены, его метод viewDidLoad() вызывается, поэтому вы знаете, что он безопасен в использовании.

+1

Так в чем же разница между collectionView и tableView? – Acoop

+0

Я не знаю, почему это так? а другое - !, но ваше утверждение о том, что «Документация Apple заявляет, что она не может быть нулевой, поскольку она отмечена знаком!» неверно: 'UITableView' не может быть nil, но' UITableView? 'и' UITableView! 'оба могут быть. – TwoStraws

+0

Я верю, что Apple означало, что после инициализации tableView не может быть nil – Gerald

0

Когда я пишу контроллер представления, я пытаюсь создать свои представления в методе loadView, так что пока вид не нужен, все свойства вида - nil, и именно поэтому все они должны быть дополнительными. Я предполагаю, что это то же самое с UICollectionViewController и UITableViewController.

И причина, почему есть ? для коллекции и ! для стола? Я думаю, это довольно просто. UITableViewController намного старше UICollectionViewController и просматривать свойства обоих помечаются иначе (nullable против null_resetable), что приводит к поведению при использовании Swift.

+0

является 'nullable''! 'While' null_restable' '?'? – Gerald

+0

Я предполагаю, что это иначе, 'nullable' приводит к'? 'И' null_resetable' в '!' В соответствии с описанием из http://stackoverflow.com/a/28420974/2294228 – olejnjak