Objective-Cでは、init
メソッド(つまり、クラスの指定された初期化子)とinitialize
メソッドの違いは何ですか?それぞれにどの初期化コードを入れる必要がありますか?
-init
は、特定のオブジェクトを初期化するために使用されるインスタンスメソッドです。 +initialize
はクラスメソッドであり、クラスのインスタンスが作成される前、および他のクラスメソッドが実行される前に実行されます。 +initialize
はほとんど使用するものではありませんが、クラス全体が使用する可能性のある静的変数を設定する場合、またはインスタンスが作成される前に特定の条件が満たされるようにする場合に便利です。
-init
メソッドに属するコードについては、 Objective-Cプログラミング言語 の 初期化子の実装 セクションで詳しく説明しています。また、クラスの初期化(つまり、+initialize
)と、同じドキュメントで クラスオブジェクト セクションでそれを行う必要がある理由についても説明しています。 +initialize
に入るコードは通常、最初に初期化する必要があるクラスの特別な機能に強く結び付けられます。 +initialize
(およびすべてのクラスメソッド)で留意すべき重要な点は、クラスメソッドのself
はクラスのインスタンスではなく、クラス自体を参照するということです。
Java開発者に対して並列を描画するには、initはコンストラクターに似ていますが、initializeはクラスの静的ブロックに似ています。