2010-03-22 72 views
1

我注意到,我很少使用屬性,因爲事實上,我很少需要訪問我的課以外我對象的變量;)賦值:屬性和類變量之間的區別?

所以我通常做的:

NSMutableArray *myArray; // not a property ! 

我的問題是:即使我不myarray的聲明作爲屬性,並iphone作出保留反正如果我做

myArray = arrayPassedToMe; 

我想是這樣,但我只是想確認;)

任何想法歡迎!

Gotye

回答

2

如果您沒有用'retain'聲明一個屬性,那麼不會進行保留調用。通常最好使用屬性訪問器(適用於所有情況下,它使內存管理更簡單),但是你可以手動保留這樣:

myArray = [otherArray retain]; 
+0

所以,如果我明白,如果我只是做 myArray = otherArray; myArray會引用otherArray嗎?所以如果釋放其他數組,myArray會自動釋放,對嗎? 如果其他數組被修改,myArray也會被修改? – gotye 2010-03-22 16:18:04

+0

是的,AFAIK該聲明只是創建一個參考。如果你不想把物體留在身邊,你應該保留它。 – Rengers 2010-03-22 16:37:49

0

我想補充凱文的答案,在這種情況下,你還需要確保在該myArray的當前指向被分配新的值之前釋放任何現有的對象,這意味着:

[myArray release]; 
myArray = [otherArray retain]; 

當您通過聲明的屬性訪問類變量,所有這些東西與固定/釋放記憶是爲你自動完成的,讓你的生活更輕鬆。

相關問題