2012-03-19 2 views
0

Можно создать дубликат:
memory management objective c - returning objects from methodsСохранять и освобождать путаницу?

У меня есть путаница с сохранением объекта. Если у меня есть функция, которая будет возвращать объект, как это:

- (object) functionA { 

    NSObject* o = [[object alloc] init]; 

    return o; 
} 

возвращаемый объект будет сохранить кол-1 .... Но это лучшая практика, чтобы сделать это, или должен я ставить autorelease первым и пусть вызывающий объект сохраняет объект.

+0

Пожалуйста, отформатируйте свой код в следующий раз. –

+0

См. Http://stackoverflow.com/questions/710288/where-are-the-best-explanations-of-memory-management-for-iphone и [официальные правила управления памятью] (http://developer.apple. ком/библиотека/Mac/# документация/Общие/Концептуальная/DevPedia-CocoaCore/MemoryManagement.html). –

ответ

3

В этом случае вы должны вернуть автореализованный объект. Правило NARC гласит, что любой метод, который не включает слова «новый», «alloc», «сохранить» или «копировать», должен возвращать ссылку без прав собственности. Метод functionA не содержит ни одного из этих слов в его названии.