一、@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;
-
如果同时手动实现了setter和getter,编译器就不会自动生成不存在的成员变量(带下划线_);
黑马程序员----@property和@synsthesize的使用
原文:http://www.cnblogs.com/unique-ios/p/4333869.html