博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Objective-C-如何选择@property-和-Instance-Variable(iVar)
阅读量:6805 次
发布时间:2019-06-26

本文共 927 字,大约阅读时间需要 3 分钟。

简述

在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://sunwl.baihongyu.com/

你可能感兴趣的文章
Asterisk 函数
查看>>
你看得到工具的本质吗
查看>>
EF架构~看看下面这代码,你还敢用它的延时加载吗?
查看>>
BroadcastReceiver入门
查看>>
【ASP.NET Web API教程】1 ASP.NET Web API入门
查看>>
EXCEL中ABS
查看>>
java代理模式与反射机制
查看>>
android Adapter
查看>>
数据结构利器之私房STL(中)
查看>>
“他们”将变身为全国最大的房屋租赁供应商
查看>>
HDU 2079 选课时间(母函数)
查看>>
最新人生感悟语句摘选
查看>>
Windows 8实用窍门系列:11.Windows 8 中的Toast Tile Badge通知
查看>>
wxpython学习笔记
查看>>
html中iframe子页面与父页面元素的访问以及js变量的访问
查看>>
linux screen 命令详解
查看>>
[Linux] 获取Shell脚本自身所在位置的绝对路径;
查看>>
Console-算法[for]-素数
查看>>
C#操作注册表全攻略
查看>>
MVC项目开发中那些用到的知识点(Ajax.BeginForm)
查看>>