Ниже приведено следующее: позаботьтесь о локальном управлении памятью, не беспокойтесь о необходимости управления памятью классов API. Они управляют своей собственной памятью.
Некоторые вещи, которые нужно запомнить с помощью управления памятью Objective-C:
- Классы касания какао несут ответственность за сохранение вещей, которые вы им даете. Добавить подпредставление к представлению? Представление сохраняет это самостоятельно. Выдвигаете контроллер вида на контроллер навигации? Контроллер навигации сохраняет контроллер представления до тех пор, пока он не будет извлечен из стека.
- И наоборот, каждый раз, когда вы вызываете alloc, copy, new и / или keep, должен быть соответствующий выпуск или autorelease. В приведенном выше коде вы вызвали alloc, чтобы сделать свой контроллер представления, предоставив ему счет сохранения 1, который вы ответственны за освобождение в какой-то момент.
Если вы используете свойства, которые являются объектами с точечной нотацией, а свойство является свойством копирования или сохранения (обычно того, что вам нужно), не делайте этого:
self.property = [[WhwhatObject alloc] init];
вместо этого сделайте это:
self.property = [[[WhateverObject alloc] init] autorelease;