Я новичок в программировании Objective-C и Cocoa, поэтому в моих первых примерах проектов я всегда принимал заявление о выпуске/автореализовании всех моих выделенных и скопированных объектов.Локальный объем области и управление памятью в какао
А как насчет локальных объектов, выделенных внутри методов? Позвольте мне написать пример кода, вот мой объект интерфейса:
@interface MySampleObject : NSObject {
NSMenu *mySampleMenu;
}
- (void)setupMenu;
@end
Давайте теперь предположим, что в реализации setupMenu я создать пункт локального меню для добавления в меню, как следует:
- (void)setupMenu
{
NSMenuItem *myLocalItem = [[NSMenuItem alloc] init];
[myLocalItem setTitle:@"The Title"];
[mySampleMenu addItem:myLocalItem];
[myLocalItem release];
}
Вопрос: должен ли myLocalItem быть выпущен после его добавления в меню или я могу предположить, что область действия объекта является локальной, поэтому нет необходимости вручную выпускать ее, поскольку она будет автоматически выпущена?
Хорошо, это ясно! Но, глядя на код MBPreferencesController (http://www.mattballdesign.com/blog/2008/10/01/building-a-preferences-window/) в методе -_setupToolbar, объект панели инструментов не выпущен.Это ошибка? – massimoksi
Предполагая, что он не использует сбор мусора, это была ошибка, да. –