0

一種針對iOS應用啓用ARC,如果我想要一個類有一個私有值/對象,它應該是更好的聲明如下:私人性質VS在ARC實例變量

// .m file 
@interface MyClass() 
@property (strong, nonatomic) NSString *name; 
@end 

或本?:

@implementation MyClass 
{ 
    NSString *name; 
} 

我應該有什麼內存管理方面的考慮?

謝謝!

+0

提到這個問題:http://stackoverflow.com/questions/5615695/best-way-of-declaring-private-variables-in-cocoa?rq=1 –

+0

@MarkoNikolovski你提到的問題是真的過時了。自2011年以來發生了很大變化。是否有更好的重複問題在2014年Objective-C中解釋了這一點? –

回答

0

您可以使用任一種方法。在第一種情況下,你宣佈一個私人財產 - 這有一些好處。例如,你可以在別處公開那個私有接口(例如:在一個單元測試中)並訪問你的一些類的內部。另外作爲一個屬性,你可以控制指針是弱還是強。在第二種情況下,您正在爲您的類聲明一個ivar(實例變量),它只能從您的類的方法中訪問。

0

您應該始終使用屬性。我知道用ARC使用ivar似乎等於使用​​一個屬性,但它不是!
屬性有很多選項,其中一個非常重要的是原子/非原子。引用另一answer上堆棧:

隨着「原子」,將合成的設定器/吸氣劑將確保整個 值總是從吸氣退回或設置由設定器, 無論設定器活動對任何其他線程。也就是說,如果線程 A是在吸氣的中間,而線程B調用的二傳手,一個 實際可行的價值 - 一個自動釋放的對象,最有可能的 - 將 在A.返回給調用者

其他真正重要的是copy如果複製的對象,你可以肯定的(幾乎)該對象並沒有從你過去的時間而改變。

我愛性質還因爲它們是方法,你可以重寫他們。有時當我編寫GUI元素時,我喜歡只公開一個像「text」這樣的屬性。使用重寫設置器,您可以將「文本」直接傳遞到它應該顯示的標籤或文本字段。
Propeties給你很多好處,自Xcode的更新版本伊瓦爾自動創建。