初始化器

初始化器用于初始化對象實例或類型

對象初始化器: -(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)用)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容