可能重复:
Why is object not dealloc'ed when using ARC + NSZombieEnabled自动引用计数不工作
我一定要在这里做了什么。编译器设置为Apple LLVM Compiler 3.0,Objective-C自动引用计数设置为YES。我还有第三方软件,需要ARC才能激活。
所以我的基本问题是我的属性不会被释放。我有以下标题:
@interface ArchiveController : UIViewController <CloseSubviewDelegate> {
NSArray *journals;
NSMutableArray *archiveViews;
}
@property (nonatomic, strong) NSArray *journals;
@property (nonatomic, strong) NSMutableArray *archiveViews;
....
@end
我合成的和初始化数组archiveViews像这样:
self.archiveViews = [NSMutableArray array];
后来我对象添加到它,一切工作正常;相同的杂志阵列。
我添加了一个dealloc方法来检查ArchiveController得到释放:
-(void)dealloc
{
DLog(@"dealloc archive controller");
}
它的工作原理,但阵列从未发布;为什么?如果我改变dealloc方法这样:
-(void)dealloc
{
DLog(@"dealloc archive controller");
self.archiveViews = nil;
}
一切工作正常,但是那不是事情应该是这样的吧?我100%肯定数组及其对象在其他地方没有被引用。
而不是预处理器应该处理插入所有保留/释放/ deallocs?当我让Xcode生成预处理的输出时,没有什么似乎改变了!
你怎么知道数组没有被释放? – 2012-02-29 21:09:05
通过在构建阶段区域添加每个文件编译标志,可以逐个文件地关闭ARC。据推测,这不是这种情况,但可能值得仔细检查。将关闭此标志是'-fno-objc-arc'。 – 2012-02-29 21:22:56
,因为数组内的对象从不释放。 Thx凯文注意到,但事实并非如此。 – cboe 2012-03-15 13:04:55