我正在開發一個iPhone應用程序,並且有關於內存管理的問題。 假設我有一個名爲Company
的課程,其中NSNumber property(nonatomic,retain)
被稱爲Id
。 我這樣做:關於添加到數組的對象中保留計數的問題Obj-C
Company *company = [[Company alloc] initWithId:[NSNumber numberWithInt:1]];
Id現在應該有一個保留計數1? 然後我這樣做:
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:company];
[company release];
現在保留在Id上的數字是多少?還有1? 我應該在dealloc
方法中加上Company
我做[self.Id release]
。 問題是,當我在我的應用程序中這樣做,然後嘗試訪問[[array objectAtIndex:0] Id]
它超出了範圍。從我的角度來看,陣列保留了公司,因此我應該能夠通過陣列訪問Id
。它是否正確?
編輯:忘了說,當我刪除Company
[self.Id release]
應用程序的工作,如果它的存在,它崩潰...
謝謝!
你設置了NSZombieEnabled標誌嗎?這通常有助於縮小過度釋放問題。 – Abizern 2010-03-01 02:40:04
我沒有。它是什麼以及如何使用它? – 2010-03-02 20:54:44