Если вы присваиваете значение с использованием нотации self.
, то вам следует release
(так как retain
вызывался автоматически, если вы используете synthesize
), если вы использовали alloc + init
подход для создания нового объекта.Пример:
NSString *str = [[NSString alloc] init];
self.name = str;
[str release];
Если вы присваиваете значение с использованием нотации self.
и присваиваете автоматически освобожденный объект, тогда вам не следует retain
и release
.Пример:
NSString *str = [NSString string];
self.name = str;
Если вы присваиваете значение без префикса self.
, вам не следует присваивать autorelease
объект и не следует release
, вам просто нужно alloc + init
объект.Пример:
NSString *str = [[NSString alloc] init];
name = str;
Или, если вы хотите assign
автоматически освобождать объект без префикса self.
, вы должны сохранить его.Пример:
NSString *str = [NSString string];
name = [str retain];
В методе dealloc
вы должны release objects
, если вы не делали этого раньше.