2011-10-21 54 views
6

我已閱讀過渡到ARC筆記,我仍然對屬性的屬性有些混淆/我們可以使用...我們可以使用weak來代替賦值(具有以下優點如果它指向的對象被釋放,則該屬性設置爲零),強取代保留以及代替複製的位置?我們仍然單獨使用拷貝,或者我們需要與拷貝結合很強,例如property (strong,copy) ..也許我需要練習並再次閱讀文檔,因爲ARC對我來說不是很清楚......ARC屬性的新屬性

回答

11

Clang ARC documentation有這樣一段話:

副本意味着__strong所有權,以及對二傳手的複製語義的通常行爲。

關於定製的setter方法,它有這樣一段話:

的屬性的指定所有權在其元數據保存下來,但 否則含義是純粹的傳統,除非屬性是 合成。

所以如果你實現自定義setters,你負責在這些setter中實現強或弱的語義。

+0

我真的不明白你如何實現強和弱的語義,因爲你不使用保留/發佈保留屬性設置器 –

+2

你的設置最終需要存儲對象指向一個具有「__strong」或「__weak」限定變量的變量。但是,它也可能執行其他操作,如執行「[self setNeedsDisplay]」。 –

+0

所以你在說要存儲由setter設置的變量的ivar應該聲明爲__strong或__weak? –

2
+0

我們是否仍然可以實現弱和強屬性的setter方法?通過保留的屬性,你實現了setter方法釋放之前的obj並保留傳遞給setter的obj。你在強大的屬性setter方法中做了什麼,因爲你不必使用retain和release ......應該如何弱如果你選擇實現它們,那麼強屬性的setter實現方式會因弧而有所不同?也許差別是相應的伊娃必須弱或強?對不起,如果我的問題是微不足道的...... –