在.h文件中,有什么区别:
@interface ViewController : UIViewController
@property (strong, nonatomic) UIView* myView;
并且
@interface ViewController : UIViewController{
UIView* myView;
}
答案 0 :(得分:15)
第一个是财产的声明,而第二个只是一个ivar。 属性是avar的getter和setter的自动声明,但是如果没有ivar(就像在你的第一个例子中那样),属性也将创建ivar。
答案 1 :(得分:6)
主要区别在于@property对其他对象是可见的,并且可以使用您的类的实例来访问它们。
您可以在实现文件中使用@synthesize来自动化实现中的定义de getter setter函数。
已更新(关注@ Graham Lee 的建议)
根据实例变量(@protected / @private / @public)的可见性说明符,可以在实现文件,子类或其他类中使用ivar。隐式值是@protected,因此在您的示例中,它将对您的实现文件和子类可见。