ios界面iVar vs物业

在.h文件中,有什么区别:

@interface ViewController : UIViewController @property (strong, nonatomic) UIView* myView; 

 @interface ViewController : UIViewController{ UIView* myView; } 

第一个是财产的声明,而第二个只是一个ivar。 一个属性是自动声明一个吸气剂和一个ivar的setter,但是如果没有ivar(就像在你的第一个例子中)那个属性也会创build一个ivar。

主要区别在于@property对其他对象是可见的,并且可以使用类的实例来访问它们。

你可以在你的实现文件中使用@synthesize来在你的实现中自动定义de-getter setter函数。

更新 (继格雷姆李的build议)

根据实例variables(@protected / @private / @public)的可见性说明符,可以将ivar用于实现文件,子类或其他类。 隐式值是@protected,所以在你的例子中,你的实现文件和子类是可见的。