В качестве простого эмпирического правила,
- Любого вид всегда принадлежит (поддерживаются сильной ссылка) его надтаблицы, когда они добавляются к надтаблице.
- Вид на верхний уровень всегда принадлежит (поддерживается сильной ссылкой) его VC.
Теперь вид может быть добавлен к его надтаблице два различным способов,
- Когда представление создаются из кода и добавляется к некоторой надтаблице с использованием
addSubview:
метода. (Это ваш вопрос).
- Когда иерархия представлений загружается из файла nib. (Здесь также неявные
addSubview:
звонки создаются UIKit для создания иерархии), и, таким образом, субблоки сохраняются путем сильной ссылки на их соответствующие наблюдения.
Таким образом, в обоих случаях виды неявно сохраняются их супервизорами и, таким образом, никогда не будут удаляться до тех пор, пока/за исключением того, что вид верхнего уровня не будет удален сам по себе. Так объявляя strong
свойства подобозрения накладывает другую собственность на подвидах:
- неявной собственность его надтаблицей и
- Явно собственность на имуществе.
Так что объявление объекта strong
для подзаголовков не требуется, однако оно было создано (от nib/по коду).
Однако, в некоторых особых ситуациях объявление может быть обязательным для объявлений strong
. Например, когда представление должно быть удалено и повторно добавлено в его супервизор, представление должно быть объявлено как сильное. Когда такое представление удаляется из своего супервизора, супервизор также выпускает свою собственность. Поэтому, если нам нужно поддерживать сильную ссылку на эту точку зрения, если нам нужно переназначить тот же самый вид еще раз для некоторого супервизора. В этом случае ссылка на вид strong
становится удобной и запрещает ее просмотр.
PS:
При создании представления с раскадровкой или наконечниками я соединил бы мои розеток. Я понимаю, что выходы создают сильное соединение со свойствами на представлении.
Я обнаружил, что в вашем вопросе есть просто заблуждение. При создании представления из раскадровки/ниба, выходы не создают никакого так называемого соединения strong
со свойствами. IBOutlet
s описывает, как свойство загружает представление. В случае свойства выхода вид, на который указывает свойство, не имеет аналогов и загружен, если он еще не загружен. Тем не менее, его сохранение по-прежнему зависит от устройства доступа к объекту strong
/weak
.
Благодарим за объяснение! – slik