@property
1,在@interface中
2,自动生成setter和getter的声明
#import@interface Person : NSObject{ int _age; // int age; int _height; double _weight; NSString *_name; } // @property:可以 自动生成某个成员变量的setter和getter声明 @property int age; //- (void)setAge:(int)age; //- (int)age; @property int height; //- (void)setHeight:(int)height; //- (int)height; - (void)test; @property double weight; @property NSString *name; @end
Person.m
#import "Person.h"@implementation Person // @synthesize自动生成age的setter和getter实现,并且会访问_age这个成员变量 @synthesize age = _age; @synthesize height = _height; @synthesize weight = _weight, name = _name; @end
#import "Person.h"@implementation Person// @synthesize自动生成age的setter和getter实现,并且会访问_age这个成员变量@synthesize age = _age;@synthesize height = _height;@synthesize weight = _weight, name = _name;@end
@property关键字
自动生成某个成员变量的setter和getter方法的声明
相当于 - (void)setAge:(int)age;
- (int)age;
@synthesize
语法: @synthesize age = _age;
相当于:
- (void) setAge:(int)age
{
_age = age;
}
- (int)age
{
return _age;
}
如果成员变量_age不存在,就会自动生成一个@private的成员变量_age
若:@synthesize age;
setter和getter实现中会访问成员变量age
如果成员变量age不存在,就会自动生成一个@private的成员变量age
手动实现:
若手动实现了setter方法,编译器就只会自动生成getter方法
若手动实现了getter方法,编译器就只会自动生成setter方法
若同时手动实现了setter和getter方法,编译器就不会自动生成不存在的成员变量
新特性:
自从Xcode 4.x后, @property就独揽了@synthesize的功能
默认情况下,setter和getter方法中的实现,会去访问下划线_开头的成员变量