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