2011-12-13 68 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将创建实例变量,但你将无法看到它可以是彻头彻尾的不方便调试。

考虑向苹果提交一个关于此的错误。