初始化器用于初始化對象實例或類型
對象初始化器: -(id)init 可以重載多個
類型初始化器:+(void)initialize 只能有一個
析構(gòu)器用于釋放對象擁有的資源,無返回值的函數(shù)
對象析構(gòu)器-(void)dealloc 只能有一個
沒有類型析構(gòu)器
alloc是一個類方法
如何查看類庫?按什么鍵?點擊
類對象在堆上分配內(nèi)存
初始化器對象實例時,init通常與alloc搭配使用
alloc所做的事情
1.在堆上分配合適大小的內(nèi)存
2.將屬性或?qū)嵗兞康膬?nèi)存置0
init所做的事情
1.調(diào)用父類初始化器[super init](前置調(diào)用)
2.初始化當(dāng)前對象實例變量(在初始化器內(nèi)部,注意使用實例變量,不要使用屬性)
拷貝屬性?
new相當(dāng)于調(diào)用alloc/init的無參數(shù)版本
類初始化器initialize負(fù)責(zé)類型級別的初始化
子類的initialize會自動調(diào)用父類的initialize(前置調(diào)用)
initialize在每個類使用之前被系統(tǒng)自動調(diào)用,且每個進程周期中,只被調(diào)用一次
對象析構(gòu)器dealloc負(fù)責(zé)釋放對象擁有的動態(tài)資源
1.ARC將自動對對象屬性引用計數(shù)減持
2.手工釋放不受ARC管理的動態(tài)內(nèi)存,如maclloc分配的內(nèi)存
3.手工關(guān)閉非內(nèi)存資源,如文件句柄,網(wǎng)絡(luò)端口
dealloc由ARC根據(jù)對象引用計數(shù)規(guī)則,在釋放對象內(nèi)存前自動調(diào)用,無法手工調(diào)用
子類的dealloc會自動調(diào)用父類的dealloc(后置調(diào)用)