Вопрос о памяти: взяв в собственность подпредставление - PullRequest
1 голос
/ 13 июня 2011

Если у меня есть подпредставление, построенное в Интерфейсном Разработчике, и я хочу дать ему фактическое имя, я предполагаю, что единственный способ сделать это - создать переменную экземпляра UIView в моем контроллере представления, а затем сделать что-то вроде этого:

- (void)viewDidLoad
{
[super viewDidLoad];
self.moveView=[self.view.subviews objectAtIndex:0];    
self.moveView.backgroundColor=[UIColor redColor];
}

Таким образом, теперь я могу работать с этим подпредставлением, используя обычное имя «moveView», вместо того, чтобы обращаться к нему по его индексу в иерархии представления.

Является ли этохороший способ сделать что-то вроде этого (вне фактического использования пользовательского класса представления)?

Другой способ, который, возможно, проще и не требует, чтобы вы выяснили номер индекса, кажется, просто создает UIView @свойство IBOutlet и присвоение его Интерфейсному Разработчику и выполнение этого:

@property (nonatomic, retain) IBOutlet UIView * sensitivity;

в @ interface.

Однако я хочу знать, означает ли "сохранение" качество этого @property, чтомой UIView, по сути, использует вдвое больше памяти, поскольку разве Interface Builder UIView также не сохраняет это в памяти?Или, если подключить это в IB, то получится одно и то же, с единственным экземпляром UIView?

1 Ответ

2 голосов
/ 13 июня 2011

Да, IBOutlet s - гораздо лучшая идея, чем ссылка на подпредставления по их индексу.

retain не заставляет свойство копировать объект на множестве - для этого и нужен атрибут copy - оно просто увеличивает счетчик сохранения объекта, чтобы «потребовать» его. Я настоятельно рекомендую прочитать Руководство по управлению памятью iOS , если вы этого еще не сделали. Также обратите внимание на раздел на кончиках .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...