1 (参数1, 参数2, 参数3) 类型 变量名;
1 @property (nonatomic, assign, readonly) NSString *iText;
1 @interface Demo : NSObject 2 { 3 NSString *name; 4 } 5 6 @property (nonatomic, copy) NSString *name; 7 @end 8 9 @implementation Demo 10 @synthesize name; 11 12 - (void)print 13 { 14 NSLog(@"name : %@", self.name); 15 } 16 @end
@property 是由编译器在编译时刻为其生成getter and setter方法声明。(上面第七行代码)xcode
@synthesize 是由编译器在编译时刻为其生成getter and setter方法定义。其下为setter实现:atom
1 @implementation 2 - (void)setName:(NSString *)aName 3 { 4 [aName retain]; 5 [iName release]; 6 iName = aName; 7 } 8 9 - (instancetype)getName 10 { 11 return [iName autorelease]; 12 } 13 @end
4、在ARC下,@property则作了三件事:spa
1. 由@property声明的属性,在编译时刻为其生成成员变量(_XXX),除非,声明一个与属性同名的成员变量,则不会自动生成相应的_XXX成员变量。code
1 @interface CWATempScheduleViewController 2 { 3 // Boolean _state; // 隐式生成 4 } 5 6 @property (nonatomic, assign) Boolean state; 7 8 @end
2. 由@property声明的属性,在编译时刻为其生成getter和setter方法的声明与定义。blog