2010-11-28 33 views
3

我已經看到了很多這樣做代碼:實例變量與屬性有什麼不同?

@interface Test0 : NSObject { 
     @private int iVar; 
} 
@property (readwrite,assign) int iVar; 
@end 

和其他一些代碼:

@interface Test0 : NSObject { 
} 
@property (readwrite,assign) int iVar; 
@end 

我知道您使用@synthesize iVar告訴編譯器生成的getter和setter方法爲財產iVar

我的問題: 我們是否需要聲明@private int iVar;實例變量? 這樣做的好處是什麼?聲明實例變量vs屬性的最佳做法是什麼? 編譯器是否將實例變量與屬性鏈接起來?

在此先感謝。

回答

5

現代Objective-C運行時和使用非易碎基類的編譯器(IIRC,OS X上的64位運行時和iOS 4.0及更高運行時)允許您省略實例變量。您的第一個示例是較老的運行時所必需的,後者是現代運行時所需的。

+0

感謝您的澄清,所以爲了最佳實踐和安全,我應該總是使用第一種方法? – Unis 2010-11-30 00:37:50

相關問題