我已經看到了使用不同方式釋放/釋放對象的示例源代碼,所以我想知道哪種方式被認爲是「最好」的。在-dealloc
有幾個選項:清理iPhone應用程序內存的最佳做法?
1)發行對象
- (void)dealloc {
[obj1 release];
[obj2 release];
[super dealloc];
}
2)設置對象零
- (void)dealloc {
self.obj1 = nil;
self.obj2 = nil;
[super dealloc];
}
3)取消分配對象直接
- (void)dealloc {
[obj1 dealloc];
[obj2 dealloc];
[super dealloc];
}
哪種方式是最好的嗎?每個優點和缺點?
同意。方法1是最好的。方法3幾乎可以確保您的應用程序崩潰。和Marco一樣,方法2可能會導致意想不到的副作用。 dealloc方法的目的是釋放你持有的任何對象。調用這些對象的發佈是唯一有意義的事情。 – Alex 2008-12-12 20:35:16
我每次使用方法2時都會遇到屬性繁瑣的問題,並且會針對現代運行時(我甚至不直接聲明任何ivars)。當然,這只是因爲gcc不允許你直接訪問自動生成的ivars(雖然即將到來)。 – 2008-12-13 23:31:19