如果我在头文件中创建一个@property并且@synthesize它,一切似乎都能正常工作,即使该项也没有被声明为实例变量。那么为什么我看到的所有示例代码都将项目声明为属性和实例变量?
答案 0 :(得分:3)
如果您没有这样做,Objective-C 2.0中的@property
命令将自动为您生成实例变量。这是为了限制您必须编写的重复代码量而引入的快捷方式。
仅在以下情况下声明iVar:
@private
,则子类将被强制使用您的@synthesized
访问者方法。)@synthesize myProperty = myInstanceVariable_
注意:如果您计划在旧设备上运行代码或使用旧版本编译代码,则需要声明iVars。
答案 1 :(得分:2)
使用以下链接查看Vladimirs评论: Properties and Instance Variables in Objective-C 2.0