屬性與點語法(重點)

&1.1.屬性定義  :A;

     @property   在.h文件中實現

1.@property  屬性關鍵字  用來定義屬性

2.@property NSString *name;

3.屬性作用:就是一組setter和getter方法  與類相似  屬性也需要聲明和實現  屬性的類型,代表setter方法參數類型,以及getter方法返回值類型.

              B:synthesize合成實現.在.m文件中實現

用來settergetter方法的實現.後跟屬性名(也就是是要實現哪一組settergetter方法) = 右邊填寫實例變量名, 在實現實例變量名字

&1.2 讀寫特性 @property (readwrite) NSString * name; readonly只讀只能生成getter方法 //讀寫特性  

1.readwrite可讀可寫(默認),自動生成settergetter方法          

2.readonly只讀,自動生成getter方法,不會生成setter方法.      

getter=方法名(特記只是修改getter方法名其餘內容不變)@property (readwrith,getter = aa) NSString * name;         setter=方法名(特記setter方法的方法名不要忘記加冒號,也只是修改setter方法名) @property (readwrith,setter = bb:) NSString * name;

B.原子性特性.考慮:效率與安全性) //  

1.atomic:有原子性,保證線程安全,默認 //  

2.nonatomic:非原子性,不保證安全性,推薦使用@property (nonatomic, readwrith,setter = bb:) NSString * name;


C. 語義特性:      

1.assign 用於基本數據類型,對象也可以使用,只是簡單賦值    

2.retain 適用於對象,在內部做優化,擁有所有權.例如:@property (nonatomic,retain) NSString * name;      

3.copy   適用於對象類型,複製出一個新對象,對新對象擁有所有權.

D.  點語法:     通過對象,屬性名,如果操作符在左邊,則內部調用的setter方法,給實例變量賦值,否則是調用getter方法取出實例變量名,

  特記:點是屬性,不是實例變量.

  p.age = 20;等價於[p setAge:20];

  int age = P.age;等價於 int age = [p age];    

stu.name = @"bb";等價於[stu setWithName:@"bb"]    

stu.name;等同於[stu name];)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章