属性之特性 浅谈
2015-06-25 21:59
281 查看
特性( Property)
使用特性我们可以避免手工编写繁琐的 setter 和 getter 方法,避免因为这些方法来内存的问题,同 时,也可以节省编写代码的时间@property 新的编译器指令,主要功能是为我们自动”生成”,setter 和 getter 方法的声明.(这里需要注意:我们是看不到这些代码的,它们是有编译器自动生成的)
@synthesize 与@ property 相对应的新的编译器功能.主要是为我们自动生成 setter 和 getter 方法的功能实现.(这里也要注意:我们也看不到相应代码)
在这里举一个例子,新建一个 QYTire 类,继承于 NSOhject
@interface QYTire : NSObject { float pressure;//胎压 float treadth;//轮胎花纹情况 } - (void)setPressure:(float)pressure; - (float)pressure; - (void)setTreadth:(float)treadth; - (float)treadth; @end
使用@ property 后就变成如下结果
@interface QYTire : NSObject { float pressure;//胎压 float treadth;//轮胎花纹情况 } @property float pressure; @property float treadth; @end
而@ synthesize 的用法也是如此,未使用之前,在对应的. m 文件中代码是这样:
@implementation QYTire - (void)setPressure:(float)p { pressure = p; } - (float)pressure { return pressure; } - (void)setTreadth:(float)t { treadth = t; } - (float)treadth { return treadth; } @end
使用了@ synthesize 后可以是这样:
@implementation QYTire @synthesize pressure; @synthesize treated; @end
而@ property 和@ synthesize 结合使用的结果就是 QYTire.h 文件
@interface QYTire : NSObject @property float pressure; @property float treadth; @end
QYTire.m 文件内容如下
@implementation QYTire @end
这是编译器的新机制,直接省略了@ synthesize, 由编译器自动生成 setter 和 getter 方法.
局限性
特性不能用于有参数的 setter 和 getter 方法,如:- (void) setTire:(Tire*) tire atIndex:(int)index; - (Tire*) tireAtIndex:(int)index;
相关文章推荐
- 主页木马的制作方法
- 解密网页加密的两个方法
- 定义标题的最好方法
- 如何定义一个getter和seter设置的属性可以被绑定
- Ruby简明教程之方法(Method)介绍
- Ruby基础知识之方法、代码段
- C#虚方法的声明和使用实例教程
- C#获取文件夹及文件的大小与占用空间的方法
- Delphi控件ListView的属性及使用方法详解
- VB6实现连接Access数据库的ADODB代码实现方法
- MySQL重定位数据目录的方法
- PowerShell中Get-Date对象的常用属性和方法介绍
- 在Linux上运行C#的方法
- C#实现绘制面形图表的方法详解
- ruby 流程控制 方法
- CSS清除浮动常用方法小结
- C#实现把dgv里的数据完整的复制到一张内存表的方法
- Oracle中插入特殊字符:&和'的解决方法汇总
- C#获取字符串后几位数的方法
- javascript下拉框不被选中大类的区别方法