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