У меня очень простой класс Person с именем ivar, называемым именем (NSString). Когда я пытаюсь выпустить этот Ивар в dealloc статический анализатор дает мне странную ошибку:Неправильный декремент подсчета ссылок объекта, который не принадлежит в этой точке вызывающим абонентом
Incorrect decrement of the reference count of an object that is not owned at this point by the caller
Что я делаю неправильно?
Кстати, вот мой код:
@interface Person : NSObject {
}
@property (copy) NSString *name;
@property float expectedRaise;
@end
@implementation Person
@synthesize name, expectedRaise;
-(id) init {
if ([super init]) {
[self setName:@"Joe Doe"];
[self setExpectedRaise:5.0];
return self;
}else {
return nil;
}
}
-(void) dealloc{
[[self name] release]; // here is where I get the error
[super dealloc];
}
@end
Предпочтительно последнего. Apple рекомендует не использовать геттеры или сеттеры в методах init и dealloc. – Chuck
Yup. Последний ftw. – bbum
Вы также можете поместить его на одну строку, разделенную запятой '[name release], name = nil' – Abizern