iPhone Вопрос о свойствах - PullRequest
       3

iPhone Вопрос о свойствах

1 голос
/ 20 октября 2010

Если вы объявляете свойство с атрибутом retain, нужно ли вам освобождать свойство, прежде чем установить его равным nil?

Что делает директива @synthesize?

Ответы [ 3 ]

2 голосов
/ 20 октября 2010

Вам не нужно освобождать сохраненное свойство перед установкой его на nil, если вы используете установщик, который делает это за вас. Если вы объявили свойство с retain, то синтезированный сеттер сделает это за вас. И это подводит нас к директиве @synthesize. Он просто говорит компилятору написать для вас сеттеры и геттеры, используя атрибуты, которые вы указали в @property.

2 голосов
/ 20 октября 2010

Вам необходимо освободить (оставленный) объект перед установкой другого объекта или nil в свойстве var, но это делает аксессор, если вам это нравится.

self.myVar = nil;

Что @synthesize делает для автоматического создания методов доступа (если вы их не определяете)

так, если вы написали свою собственность как:

@property (nonatomic, retain) NSObject *property;

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

- (void) setProperty:(NSObject *)aProperty{
    if(property != aProperty){
        [property release];
        property = [aProperty retain];
    }
}

- (NSObject*) property{
    return property;
}

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

Apple Doc на свойства

0 голосов
/ 20 октября 2010
  1. Нет, на самом деле вам вообще не нужно его выпускать.Это было бы ошибкой.Вам даже не нужно устанавливать его на ноль, если вы действительно не хотите контролировать, когда он будет выпущен (то есть до выпуска вашего собственного класса).
  2. Создает для вас методы получения и установки, предположительнооптимизированный способ.

Для получения дополнительной информации я предлагаю вам прочитать соответствующую страницу в руководстве .

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