我的應用程序中有幾個對象可以在某些時候變爲零,並且我有一些理論上用於將這些對象置零的方法。iphone - 測試對象是否存在
但是,如果我試圖放棄一個不存在的對象,應用程序將崩潰。
例如...
[object1 release];
object1 = nil;
// ...,之後
[object1 removeFromSuperview]; // this will crash
後來我想,爲什麼不測試,以查看是否刪除對象之前存在...
if (object1 != nil)
[object1 removeFromSuperview];
// this will crash too, because object1 cannot be tested for nil because it does not exist
如何在測試之前檢查對象是否存在,如果它爲零? 東西如
if (object1 exists({
if(object1 != nil))
[object1 removeFromSuperview)
}
這是可能的嗎?
我將此澄清......
我的意思是這樣的:想象我已經object1宣佈對頭部和代碼初始化。所以它存在並指向一個有效的參考。在某些時候,對象可能會被釋放,所以引用仍指向一個對象,但對象被釋放。即使我在釋放後將對象置於零,我也無法做任何事情。
問題是這樣的:我有一些異步的方法。其中一人掃描一些物體,如果發現它們就將其移除。我必須檢查對象是否存在,並且在再次釋放對象之前指向有效對象。這是關鍵:如何在釋放對象之前測試對象是否存在,並將其引用指向有效的對象,以便再次釋放已釋放的對象並使應用程序崩潰。
你的意思是「object1」處處有「對象」嗎?我假設如此。 – itsmatt 2010-04-07 16:39:22
我已經澄清了原來的問題。謝謝。 – SpaceDog 2010-04-07 16:51:52
您正在混合使用術語指針,引用和對象。這些術語具有非常不同的含義。如果你不瞭解它們之間的差異,它會幫助你閱讀C編程。如果你確實瞭解它們,那麼如果你更加註意自己的用法,它會對你的讀者有所幫助。因爲這個,你的帖子有點難以閱讀。 – glorifiedHacker 2010-04-07 17:06:54