大家好我通过IDE中的分析工具运行我的代码,我在dealloc中得到一个指示并说“调用者此时不拥有的对象的引用计数的错误减少”我是创建一个NSArray并正确发布我的代码示例在
之下myClass.h
{
NSArray *arrayOfChapters;
}
@property (nonatomic, retain) NSArray *arrayOfChapters;
@end
myClass.m:
-(void)parseAndLoadChaptersAndPages{
self.arrayOfChapters = chapterLoader.arrayOfChapters;
}
-(void)dealloc{
[self.arrayOfChapters release];
[super dealloc];
}
任何人都可以告诉我为什么它会给我警告。谢谢提前。
答案 0 :(得分:0)
您可以直接释放ivar([arrayOfChapters release]
),也可以将属性设置为nil(self.arrayOfChapters = nil
),setter方法将为您释放ivar。
该对象拥有ivar arrayOfChapters
,但不一定是您使用属性语法调用的arrayOfChapters
方法的返回值。这有点令人困惑,因为ivar和方法都有完全相同的名称。在这种情况下,arrayOfChapters
方法返回ivar,所以这不是问题。然而,分析器认为该方法理论上可以返回一个不同的对象,在这种情况下,你将过度释放该对象。