Objective-C 编程语言(5)属性----运行时的区别

转载请标明出处: http://blog.csdn.net/zhangxingping

运行时的区别

    总体来说,属性的行为在新的运行时系统和老的运行时系统上是一致的。但是有一个区别:现代的运行时系统支持自动变量绑定;而老的运行时系统则不支持。

    在老的运行时系统中,我们必须为属性提供一个相同名称、相同类型的实例变量来进行自动绑定;或者是手动地为属性绑定既存的实例变量。而在现代运行时系统中,如果我们没有为属性绑定实例变量,编译器会自动为我们增加一个实例变量。如下:

@interface MyClass :NSObject

{

    float sameName;

    float otherName;

}

@property float sameName;

@property float differentName;

@property float noDeclaredIvar;

@end

 

@implementation MyClass

@synthesize sameName;

@synthesize differentName =otherName;

@synthesize noDeclaredIvar;

@end

    老运行系统的编译器会在@synthesize noDeclaredIvar;处报告错误;而现代运行时系统的编译器则会自动增加一个实例变量来表示noDeclaredIvar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值