2011-12-13 66 views
2

我在因特網上看到這段代碼片段(http://iphonedevelopment.blogspot.com/2008/12/outlets-property-vs-instance-variable.html):Objective C-定義一個屬性時定義一個實例變量

#import <UIKit/UIKit.h> 

@interface MyViewController : UIViewController { 
UILabel *myLabel; 

} 
@property (nonatomic, retain) IBOutlet UILabel *myLabel; 
@end 

我的問題是......當@synthesize被調用時不是自動創建的UILabel實例變量?在頭文件中創建實例變量有什麼意義?你可以用@property來獲得嗎?

+0

[Objective-C 2.0中的屬性和實例變量]的可能重複(http://stackoverflow.com/questions/3074248/properties-and-instance-variables-in-objective-c-2-0) – Brian 2011-12-13 21:40:40

回答

3

當@synthesize被調用時不是自動創建的UILabel實例變量?

是的。

在頭文件中創建實例變量有什麼意義。

個人喜好。一些開發者(比如我)喜歡看到一個類的完整狀態。它有助於查看哪些實例變量可用,以及檢查所有實例變量是否正確釋放。

這也是一個相對較新的功能。舊代碼不會期望自動生成的實例變量。

你可以離開只是@property?

不,您需要@synthesize來獲取自動生成的實例變量編程生成的屬性值不會直接映射到任何實例變量。

1

@synthesize將創建實例變量,但你將無法看到它可以是徹頭徹尾的不方便調試。

考慮向蘋果提交一個關於此的錯誤。