您的位置:首页 > 运维架构

第八篇:编译器特性:关键字property与synthesize用法

2015-09-11 20:09 281 查看
1.property关键字:

》property 是一个编译器特性。

(1)在:xcode4.4版本以前

》用法:@property 指定成员变量类型 指定去掉下划线的成员变量名 ;

》用于在类声明中自动生成指定的 成员变量 set / get 方法(赋值 / 取值)的声明。

@interface Iphone : NSObject

{

int _cpu ;

}

//自动生成 - (void)setCpu:(int)cpu ; 和 - (int)cpu ; 两个方法的声明

@property int cpu;

@end

(2)xcode4.4版本以后property做了增强:

》帮助声明与实现:上述声明的同时,也会自动实现指定的 成员变量 set / get 方法(赋值 / 取值)。

》如果没有手动声明 成员变量,property 会在 .m 文件中自动帮助我们生成一个以"_"开头的成员变量(成员变量: _变量名 )。例如:@property int xxxx ; 则在 .m 文件中自动生成的成员变量:_xxxx。

》注意点:#如果想让子类继承父类的成员变量,还是必须在声明中手动定义成员变量。#如果你自己同时实现了一个成员变量的set / get 方法时,那么编译器不会在 .m 文件中自动成该成员变量,必须自己定义该成员变量。

2.synthesize关键字(实现):

》编译器特性。

(1) 明确告诉synthesize 后面的 变量 要赋值给 指定的成员变量:

》用法:@synthesize 变量名 = 成员变量 ;

》用于在类的实现中自动生成给 指定的 成员变量 set / get 方法(赋值 / 取值)的实现。

@implementation Iphone

/*

会实现:

- (void) setCpu:(int)cpu // - (void)set变量名大写:(int)变量名

{

_cpu = cpu ;

}

- (int) cpu // - (int)变量名

{

return _cpu ;

}

*/

@synthesize cpu = _cpu ;

@end

(2) 没有明确告诉synthesize 后面的 变量 要赋值给 指定的成员变量:

》用法:@synthesize 变量名 ;

》说明:这样会自动赋值给和 变量 同名的成员变量。等价:@synthesize 变量名 = 变量名;

》如果该类中有一个成员变量cpu,那么当这样写时:

@implementation Iphone

/*

会实现:

- (void) setCpu:(int)cpu

{

self->cpu = cpu ;

}

- (int) cpu

{

return self->cpu ;

}

*/

@synthesize cpu ;

@end

3.重写set / get 方法:

》当想控制外界传入的一些数据的合理性安全性的时候,我们就需要手动实现set 方法。

》再次强调:当我们手动同时实了一个成员变量的set / get 方法的时候,property 就不会自动给我们生成成员变量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: