简述在Objective-C的类中,有两种方式可以声明变量@property: // 在 .h文件@interface Hello : NSObject@property (nonatomic, strong) UIView *view;@end或者 // 在 .m文件@interface Hello()@property (nonatomic, strong) UIView *view;@end实例变量 Instance Variable (iVar)://在 .h文件里 @interface Hello () {UIView *_view;}@end或者//在 .m文件 的interface里@interface Hello () {UIView *_view;}@end或者//在 .m文件 的implement里@implement Hello {UIView *_view;}@end什么时候用@property, 什么时候用 iVar呢?区别可见性如果想要定义私有(private)变量, 可以考虑使用iVar; 定义公开(public)变量,则使用@property;iVar虽然可以用 @private, @protected 和 @public 修饰, 但只会对影响到子类的可见性.也就是说,即使你用 @public修饰iVar, 其它类也是无法访问到该变量的.属性(attributes)@property 可以使用strong, weak, nonatomic, readonly 等属性进行修饰.iVar默认都是strong.书写习惯通常, iVar名称使用下划线开头, 如 _view, _height, _width.但这并非强制要求.getter/setter编译器自动为@property生成访问器(getter/setter).效率iVar 运行效率更高.结论如果只是在类的内部访问, 既不需要weak、retain等修饰词,也不需要编译器自动生成getter/setter方法, 则使用 variable就可以.否则就使用 @property.参考资料:http://hongchaozhang.github.i…https://www.quora.com/Objecti…