《Objective-c》-(@property和@synsthesize)

 

一、@property和@synthesize的基本使用

  • @property :可以自动生成某个成员变量的setter和getter的声明(@property int age;)。写在@interface里面;

       

  • @synthesize :自动生成age的setter和getter,并且在方法内部访问的是_age这个成员变量(@synthesize age = _age; // 如果后面不写=_age默认就是访问age成员变量)。写在@implementation里面;

     

二、@property和@synthesize的细节

  • 自动生成相应的成员变量的setter和getter的声明

  • 如果没有明确的setter和getter的实现,会自动生成相应的成员变量的setter和getter的实现

  • 如果代码中手动实现了setter方法,编译器就会自动生成getter方法

  • 如果代码中手动实现了getter方法,编译器就会自动生成setter方法

  • 如果代码中同时实现了setter方法和getter方法,编译器就不会自动生成不存在的成员变量(带下划线)

三、@property和@synthesize的其他用法

      

四、说明:

      从Xcode4.4开始,@property  int  speed;既可以生成_speed的setter和getter的声明,还会自动生成_speed的setter和getter的实现,并且即使如果_speed没有在.h文件中的@interface中没有定义,也可以自动生成次成员变量,但是其类型是@private。

五、@synthesize  age = _age;@synthesize  age;的区别:

  • @synthesize  age = _age; 访问的是_age这个成员变量;

  • @synthesize  age; 默认访问的是age这个成员变量,如果没有这个成员变量,就会自动生成@private类型的age成员变量;

六、注意点:

  • 如果手动实现了setter编译器就只会自动生成getter

  • 如果手动实现了getter编译器就只会自动生成setter

  • 如果同时手动实现了settergetter编译器就不会自动生成不存在的成员变量(带下划线_)

 

 
 
 
 
posted @ 2015-03-12 22:07  深秋的露水  阅读(654)  评论(0编辑  收藏  举报