iOS: сильная или слабая ссылка ARC с IBOutlets для перьев (для пользовательского UITableviewCell) - PullRequest
2 голосов
/ 27 февраля 2012

Извините, если об этом уже спрашивали, но я искал и не нашел ответа на конкретный случай, в котором я сейчас нахожусь.

Я подклассифицирую UITableViewController. У меня нет специального пера для этого. У меня также есть пользовательский tableview cell, который я реализую, что имеет свой собственный перо. Когда я создаю розетку для этой ячейки, я должен создать слабую ссылку? Поскольку это заканчивается как подпредставление TableViewController, я думаю, что да, но документы Apple также отмечают, что объекты верхнего уровня в перо должны быть сильными, так что я в замешательстве. Любая помощь будет оценена!

Ответы [ 4 ]

1 голос
/ 27 февраля 2012

Используйте слабую ссылку.Это связано с тем, что когда ваше представление выгружено, если оно слабое, ссылка автоматически будет установлена ​​на ноль.

0 голосов
/ 22 июля 2014

Вы должны использовать слабое владение. Поскольку ваша ячейка табличного представления имеет строгую ссылку на родительское представление, а родительское представление имеет строгую ссылку на ее подпредставления

Как это:

@property (weak, nonatomic) IBOutlet MyView *viewContainerSubview;
@property (strong, nonatomic) IBOutlet UIView *topLevelView;
0 голосов
/ 28 ноября 2012

«Документы Apple также отмечают, что объекты верхнего уровня в перо должны быть сильными, поэтому я в замешательстве»

Это верно независимо от того, какой подкласс UIView вы используете. Если у вас есть перо с UITableViewCell и UIView IBOutlet, оба в качестве объектов верхнего уровня, UIView должен быть сильным. если UIView IBOutlet - это подпредставление вашего UITableViewCell в кончике, он должен быть слабым.

0 голосов
/ 27 февраля 2012

Если вы поместите ячейку в tableview только за пределами xib (и я уверен, что вы это сделаете), тогда она должна быть надежной ссылкой, иначе ячейка будет освобождена, прежде чем вы сможетеиспользуйте его при построении таблицы.

Возможно, если бы вы использовали его в viewDidLoad, он все еще существовал бы, но лучше не полагаться на цикл вызовов, действующий таким образом.

...