@property的內存管理

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


發佈了59 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章