自定義類的初始化。

2021-08-31 01:56:56 字數 586 閱讀 7630

乙個類的初始化寫法糾結了多少人!

下面這種初始化方法在object c裡,就像耶穌一樣無法撼動其位置,也像耶穌一樣,沒人敢有異議,以至於有人會說記住就可以了,別問為什麼。

- (id) init

return self;

}

對於初次接觸object c的人來說,這種寫法甚是糾結,

但是如果你要是知道,object c裡會出現一下幾種匪夷所思的現象,你就會感慨,原來還真想耶穌一樣能保護你。

1.例項的記憶體位址,是在alloc的時候就已經準備好了的,init只是用來初始化其內部資料。

2.呼叫父類初始化方法時,有可能會改變例項的記憶體位址!

3.呼叫父類初始化方法時,有可能會返回nil!

為了對應情況2,需要把父類初始化方法改變後的位址傳給self,要不然子類初始化方法所處理的資料還都在老位址上。

為了對應情況3,需要判斷返回的父類是不是nil,如果是nil的話,子類也無法處理了。

出現情況3,應該是父類初始化出錯了。

但是什麼時候會出現情況2,以及出現情況2時,老記憶體的占用是如何釋放的,還是不得其所。

Matlab自定義初始化函式

有時候,有些輸出的初始化不能在模型中直接設定,這時候可以通過設定模型引數配置。開啟 configuration parameters code generation custom code 選項卡,在右側的上半部分 insert custom c code in generated 選項卡裡選擇 i...

自定義集合初始化器

對int型別集合初始化,這樣寫 static void main string args foreach var item in list console.readkey 對鍵值對集合初始化,這樣寫 static void main string args foreach var item in d...

自定義集合初始化器

對int型別集合初始化,這樣寫 static void main string args foreach var item in list console.readkey 對鍵值對集合初始化,這樣寫 static void main string args foreach var item in d...