Нужно ли сохранять объекты, которые я получаю в аргументах? - PullRequest
0 голосов
/ 07 февраля 2011

Если у меня есть метод с входными данными, который я должен сохранить?

- (void) exampleMethod: (NSString *)input {
    self.hey = [input retain];
}

Что если я использую input более одного раза?

Ответы [ 3 ]

2 голосов
/ 07 февраля 2011

Прочитайте Правила управления памятью . Если hey является свойством с установленными атрибутами retain или copy, вам не нужно вызывать -retain для него (вы можете просто сделать self.hey = input).

2 голосов
/ 07 февраля 2011

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

Однако, если вы используете свойство (которое опять-таки кажетсяздесь), вы должны управлять памятью в самом установщике свойств, не вызывая retain явно при вызове установщика.

1 голос
/ 07 февраля 2011

В этом случае присваивание свойству .hey a retain применяется в методе доступа.

Методы доступа

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

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