总结一下@property所有的参数(本文的所有内容都是从前面的日志中抽取出来的,但是只涉及@property参数)
1.@property和@synthesize关键字
----------@property:可以自动生成某个成员变量的setter和getter声明
@property int age;//相当于下面两句
- (void)setAge:(int)age;
- (int)age;
----------@synthesize自动生成age(property)的setter和getter实现,并会访问_age这个成员变量
@synthesize age = _age;//相当于下面两句
- (void)setAge:(int)age
{
_age = age;
}
- (int)age
{
return _age;
}
√如果_age这个成员变量不存在 ,就会自动生成@private类型的_age的变量,意味着类声明中没有_age,而在类实现中直接使用@synthesize age = _age;也可以。
√如果不指定值@synthesize age 就会访问age这个成员变量,意味着这一句相当于@synthesize age = age;
***************生成get和set方法的最简写法(Xcode4.4开始支持)
@property int age;
一句完成的工作(3个):
√1.添加成员变量_age(private):
@private
int _age;
√2.声明getter和setter方法
@property int age;
√3.实现getter的setter方法
@synthesize age = _age;
注意点:
----如果自己在@implementation中写了setter和getter,但是没有在@interface中声明_age成员变量(这种情况的可能应该是疏忽大意),@property int age;不会再帮助生成_age成员变量;
----如果只是在@implementation中写了setter或者getter两个方法中的一个,@property int age;依然会帮助生成_age成员变量和两一个方法。
因此有下面两种简化代码的方式(三种方式):
方式一:
在@interface中声明属性 和使用@property生成getter和setter声明
在@implementation中使用@synthesize生成getter和setter的实现