可能重複:
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