关于C#:ios接口iVar vs Property

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,因此在您的示例中,它对实现文件和子类是可见的。