Можете ли вы помочь мне понять, сохранить количество в какао / цель-с? - PullRequest
0 голосов
/ 28 января 2009
> .h file:
NSString *myString;
@property (nonatomic, retain) NSString *myString;

> .m file:
self.myString = [[NSString alloc] init];

Если я не ошибаюсь, я получу экземпляр NSString с счетом сохранения +2. Правильно?

Мне любопытно, потому что в примере Apple для Location используется "self". для инициализации. Зачем? Я проверил, и он показывает, что количество оставшихся элементов равно + 2.

Ответы [ 3 ]

7 голосов
/ 28 января 2009

Чтобы ответить на ваш первый вопрос:

Да, счет удержания будет два.


Чтобы ответить на ваш второй вопрос:

Причина использования:

self.myString = x;

, что эквивалентно:

[self setMyString:x];

таков, что весь код обработки свойства выполняется правильно. Сюда входят уведомления KVO и код, который автоматически сохраняет x при его передаче.

Если бы вы просто установили:

myString = x;

в файле .m вы можете обойти весь этот код установки скрытого свойства и просто установить для переменной-члена myString указатель на x.

3 голосов
/ 28 января 2009

Мустафа: Да, вы правы. (Свойство должно быть объявлено как copy, а не retain, но это другое дело.)

1 голос
/ 29 января 2009

В вашей модификации 1 вы устанавливаете переменную экземпляра непосредственно для объекта с автоматическим освобождением. Это означает, что в конце цикла событий ваш locationManager будет освобожден, и в этом случае у вас будет ссылка на неиспользуемый блок памяти.

Ваша модификация 2 выглядит правильно для меня, как и пример кода, с которого вы начали.

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