IBOutlet
должен быть сильным по соображениям производительности.См. Storyboard Reference, Сильный IBOutlet, Scene Dock в iOS 9
Как объяснено в этом параграфе, выходы для подпредставлений представления контроллера представления могут быть слабыми, потому что эти подпредставленияуже принадлежит объекту верхнего уровня файла пера.Однако, когда Outlet определен как слабый указатель, и указатель установлен, ARC вызывает функцию времени выполнения:
id objc_storeWeak(id *object, id value);
Это добавляет указатель (объект) к таблице, используязначение объекта в качестве ключа.Эта таблица называется слабой таблицей.ARC использует эту таблицу для хранения всех слабых указателей вашего приложения.Теперь, когда значение объекта освобождено, ARC будет перебирать слабую таблицу и устанавливать для слабой ссылки значение nil.В качестве альтернативы, ARC может вызвать:
void objc_destroyWeak(id * object)
Затем объект незарегистрированный и objc_destroyWeak снова вызывает:
objc_storeWeak(id *object, nil)
Эта книга-поддержание связи со слабой ссылкой может занять в 2–3 раза дольше, чем выпуск сильной ссылки.Таким образом, слабая ссылка вводит накладные расходы для времени выполнения, которых вы можете избежать, просто определяя торговые точки как сильные.
Начиная с Xcode 7, он предлагает strong
Если вы смотрите сеанс WWDC 2015 407 Реализация дизайна пользовательского интерфейса в Интерфейсном Разработчике , он предлагает (расшифровка http://asciiwwdc.com/2015/sessions/407)
И последний вариант, который я хочуукажите тип хранилища, который может быть как сильным, так и слабым.
В целом, вы должны сделать свою торговую точку сильной, особенно если вы подключаете торговую точку к вспомогательному представлению или к ограничению, которое не всегда будетбыть сохраненным в иерархии представлений.
Единственный раз, когда вам действительно нужно сделать вывод слабым, - это если у вас есть пользовательское представление, которое ссылается на что-то, поддерживающее иерархию представления, и в целом это не рекомендуется.
Итак, я выберу сильный, и я нажму кнопку «Подключить», чтобы сгенерировать мою розетку.