ios interface iVar vs Property
在.h文件中,以下两者之间的区别是什么:
1 2 | @interface ViewController : UIViewController @property (strong, nonatomic) UIView* myView; |
和
1 2 3 | @interface ViewController : UIViewController{ UIView* myView; } |
第一种是财产申报,而第二种只是一种增值税。属性是对ivar的getter和setter的自动声明,但是如果没有ivar(如在第一个示例中),则属性也将创建ivar。
主要的区别是@property对其他对象可见,并且可以使用类的实例通过这些对象访问。
您可以在实现文件中使用@synthesis来自动化实现中的definition de getter setter函数。
更新(根据@graham lee的建议)
根据实例变量(@protected/@private/@public)的可见性说明符,可以在实现文件、子类或其他类中使用ivar。隐式值是@protected,因此在您的示例中,它对实现文件和子类是可见的。