2012-11-07 27 views
0

我的程序有一個類,該類有一個+initialize方法。我想知道是誰稱這種方法?調試工具都非常清楚:何時和誰打電話+初始化?

enter image description here

什麼觸發+initialize被稱爲?應用程序啓動的開始?

+0

第一次使用時發佈代碼 –

+2

實際上,調試工具會告訴你究竟是誰調用的:_class_initialize()。你的堆棧跟蹤不會被擴展,所以最終你不知道是誰叫*那個*。要查看,請使用Xcode窗口左下角的滑塊展開堆棧軌跡。 –

回答

5

運行時發送initialize每個類別中的節目恰好一個時間僅僅是類,或從它繼承的任何類之前,從程序中發送它的第一個消息。

請參閱+ (void)initialize的文檔NSObject

關於initialize問題的authoritative blog post指出initialize在第一次使用該類時被執行一次,即作爲在該類被髮送其第一消息之前的docs狀態。

+0

誰發送第一條消息?我如何跟蹤它? –

+0

如果您正在創建有問題的類的實例,那麼您可以在指定的初始化程序中放置一個斷點並查看堆棧跟蹤。你當然必須重寫'init'。 – FluffulousChimp

+0

我想出了它叫什麼名字。但是,請查看圖片中的堆棧跟蹤。不說很多不是。 –