Objective-C 類中init與initialize的區(qū)別

兩個方法名字長的很像,所以一定有相似的作用,身上都貼著“一次”的標簽。

區(qū)別##

  • init是“-”開頭的方法

  • initialize是“+”開頭的類方法

  • init在類實例化(new)的時候就會調用一次[ClassName new]相當于[[class alloc]init],我們對init應該是很熟悉的,大多數(shù)時候我們不使用new來實例化,而是直接定義自己的init方法通過[[ClassName alloc]initWithXXX]這樣來做。

  • initialize在向類發(fā)送消息的時候調用一次:什么是發(fā)送消息?實例化一個對象[ClassName new]是發(fā)送消息,調用一個類方法[ClassName method]也是向這個類發(fā)送消息。

  • 在new的時候,initialize方法會在init之前先調用

  • 只要new一次,init就會調用一次,new多少次,init就調用多少次,但initialize只會調用一次。

  • 如果子類沒有實現(xiàn)initialize的重寫,在子類收到消息的時候,會調用兩次initialize,一次是父類調用的,一次是子類調用的。

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容