2010-03-18 111 views
0
-(IBAction) testTemp: (id) sender{ 
    id tempObj; 
    tempObj = otherObject; //the otherObject will be released in dealloc method; 
    [tempObj doSomething]; 
} 

正如你所看到的,我用的是TEMPOBJ對於臨時使用。我不會在用戶退出此方法後使用它,我是否需要釋放tempObj?爲什麼?我是否需要從此示例中釋放臨時對象?

回答

0

不,你不需要釋放tempObj。原因是因爲你不保留它或者對它進行任何內存管理。所有tempObj是一個指向otherObject的指針,你只是將它用作別名。

在代碼中沒有任何理由不直接使用otherObject - 如果在真正的代碼你需要使用TEMPOBJ則很可能是一些涉及內存管理。

0

tempObj不是一個對象。 tempObj是一個變量。 tempObj包含一個指向對象的指針,賦值tempObj = otherObject使otherObject包含相同的指針。

該對象是內存的一部分。每個對象都有一個計數器,即參考計數器。 [tempObj retain]將1加到參考計數器,[tempObj release]從參考計數器中減1。這是一種瞭解您使用對象的地點數量的方法。當計數達到0時,該對象宣告死亡。沒有人應該再使用它:它所居住的內存部分可能會被其他對象使用。

所以你不會希望釋放otherObject或TEMPOBJ,這將獲得相同的效果(從對象的引用計數減1)。如果這樣做,引用計數可能會達到0,並且釋放dealloc方法可能會導致崩潰。

相關問題