“属性” VS “实例变量”

文章目录属性和实例变量间的关系属性 VS 实例变量的优缺点对比根据具体场景来决定声明实例变量还是属性属性和实例变量间的关系“属性”(property)是 Objective-C 的一项特性,用于封装对象中的数据。 Objective-C 对象通常会把所需要的数据保存为各种实例变量。实例变量一般通过“存取方法”来访问。其中,“获取方法”(getter)用于读取变量值,而“设置方法“(sett...
摘要由CSDN通过智能技术生成

属性和实例变量间的关系

  • “属性”(property)是 Objective-C 的一项特性,用于封装对象中的数据。 Objective-C 对象通常会把所需要的数据保存为各种实例变量。实例变量一般通过“存取方法”来访问。其中,“获取方法”(getter)用于读取变量值,而“设置方法“(setter)用于写入变量值。开发者可以利用“属性”这一特性令编译器自动编写与属性相关的存取方法,此特性引入了一种新的“点语法”,使开发者可以更为容易地依照类对象来访问存放于其中的数据。

  • 一个问题:如果代码中实例变量使用了编译期计算出的偏移量,那么修改类定义之后必须重新编译,否则就会出错。例如,某个代码库中的代码使用了一份旧的类定义,如果和其链接的代码使用了新的类定义,那么运行时就会出现不兼容现象。

    Objective-C 的做法是:把实例变量当作一种存储偏移量所用的“特殊变量”,交由“类对象”(class object)保管。偏移量会在运行期查找,如果类的定义变了,那么存储的偏移量也变了,这样的话,无论何时访问实例变量,总能使用正确的偏移量。 甚至可以在运行期向类中新增实例变量,这就是“稳固的”(notfragile)“应用程序二进制接口”(Application Binary Interface, ABI)。ABI定义了许多内容,其中一项就是生成代码时应遵循的规范。有了这种“稳固的”(nonfragile)的ABI,我们就可以在类扩展(E

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值