我在互联网上看到了这段代码片段(http://iphonedevelopment.blogspot.com/2008/12/outlets-property-vs-instance-variable.html):
#import <UIKit/UIKit.h>
@interface MyViewController : UIViewController {
UILabel *myLabel;
}
@property (nonatomic, retain) IBOutlet UILabel *myLabel;
@end
我的问题是......调用@synthesize时是不是自动创建了UILabel实例变量?在头文件中创建实例变量有什么意义..你可以只使用@property吗?
答案 0 :(得分:3)
调用@synthesize时是不是自动创建了UILabel实例变量?
是
在头文件中创建实例变量有什么意义。
个人偏好。一些开发人员(像我一样)更喜欢看到一个类的状态的完整画面。它有助于查看哪些实例变量可用,以及检查是否正确释放了所有实例变量。
这也是一个相对较新的功能。较旧的代码不会期望自动生成的实例变量。
你能逃脱@property吗?
不,您需要@synthesize
来获取自动生成的实例变量以编程方式生成的属性值不会直接映射到任何实例变量。
答案 1 :(得分:1)
@synthesize将创建实例变量,但您将无法在调试器中看到它,这可能是非常不方便的。
考虑向Apple提交有关此问题的错误。
答案 2 :(得分:0)
是的,你只能使用Objective-c 2.0中的@property
。
请参阅:Do declared properties require a corresponding instance variable?