1.set方法內存管理相關的參數
* retain : release舊值,retain新值(適用於OC對象類型)
* assign : 直接賦值(默認,適用於非OC對象類型)
* copy : release舊值,copy新值
2.是否要生成set方法
* readwrite : 同時生成setter和getter的聲明、實現(默認)
* readonly : 只會生成getter的聲明、實現
3.多線程管理
* nonatomic : 性能高(一般就用這個)
* atomic : 性能低(默認)
4.setter和getter方法的名稱
* setter : 決定了set方法的名稱,一定要有個冒號 :
*getter : 決定了get方法的名稱(一般用在BOOL類型)
@property Book *book // 這個語句是直接賦值的,不會有retain
@property (retain) Book *book // 生成的set語句會有retain的,相當於
- (void)setBook : (Book *)book
{
if (_book = book)
{
[_book release];
_ book = [book retain];
}
}
// 當然,如果property中又retain ,則實現中需要實現dealloc語句
- (void)dealloc
{
[_book release];
[_name release];
[super dealloc];
}
1.@class的作用:僅僅告訴編譯器,某個名稱是一個類
@class Person; // 僅僅告訴編譯器,Person是一個類
2.開發中引用一個類的規範
1> 在.h文件中用@class來聲明類
2> 在.m文件中用#import來包含類的所有東西
3.兩端循環引用解決方案
1> 一端用retain
2> 一端用assign