Хороший источник для выделения памяти приведен Аароном.
Относительно @synthesize
:
Скажем, у вас есть свойство P
, вам нужно написать геттер и сеттер для него. Существует несколько общих подходов, один из которых заключается в том, что вы сохраняете этот объект, когда устанавливаете это свойство и освобождаете старое значение. Например:
- (void)setP:(PClass *)value
{
[value retain];
[_pInstanceVariable release];
_pInstanceVariable = value;
}
Поскольку это очень распространенный фрагмент кода, компилятор может автоматизировать его для вас, если вы зададите ключевое слово retain
в объявлении свойства, а затем выполните @synthesize
в вашей реализации. Компилятор сгенерирует вышеупомянутый код, что означает, что ваш код будет намного чище без утомительных повторяющихся частей.
То же самое относится и к получателям, если вы не хотите что-то более сложное, чем:
- (PClass *)p
{
return _pInstanceVariable;
}
@synthesize
сделает работу