------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1. @property
@property用在@interface中,写法如下:
#import<Foundation/Foundation.h>
@interface Person :NSObject
{
int _age ; <span style="color:#003300;">// 定义成员变量 年龄</span>
int _height ; <span style="color:#003300;">// 定义成员变量 身高
</span>
NSString *_name ; <span style="color:#003300;">// 定义成员变量 姓名
}</span>
@property int age ; <span style="color:#003300;">// @property作用:可自动生成这个成员变量的setter和getter的声明
</span>
@property int height ;<span style="color:#003300;"> // 相当于height的set和get方法的声明
</span>
@property NSString *name ;
@end
这里的@property 想当于给成员变量进行set和get 方法的声明。
@property int age 等同于 如下
- (void)setAge:(int)age; <span style="color:#003300;"> // 对成员变量 _age的set方法的声明</span>
- (int)age; <span style="color:#003300;">// 对成员变量 _sge方法的get方法的声明</span>
@propery nt age , height; <span style="color:#003300;">// 一般不建议这么写,了解就可以了</span>
2. @synthesize
用在@mplementation 中
@implementation Person
@synthesize age = _age ; <span style="color:#003300;">// 对成员变量 _age 进行方法实现</span>
@end
@synthesize 自动生成成员变量的set和get的实现,并且会访问当前成员的这个变量
等同于下面的这个实现
- (void)setAge:(int)age <span style="color:#003300;">// set方法对成员变量的实现</span>
{
_age = age ;
}
- (int)age <span style="color:#003300;">// get 方法对成员变量的实现</span>
{
return _age ;
}
@synthesizer 细节:
1> @synthesize age = _age;
set 和get实现中会访问成员变量_age。
如果成员变量 _age不存在时,就会自动生成一个@private的成员变量 _age。
2> @synthesize age
set 和get 实现中会访问成员变量age。
如果成员变量age不存在,就会自动生成一个private的成员变量age。
3> 手动的实现
当手动实现了set 方法,编译器就只会自动生成get方法。
当手动实现了get 方法, 编译器就只会自动生成set方法。
若同时实现了set 和get 方法,编译器就不会自动生成不存在的成员变量。