-3

重複の可能性:
alloc と init は実際に何をするのか

[[className alloc] init] のようなコードを実行するため、実際に alloc で何が起こり、init で何が起こるか、私の理解では、alloc はそのクラスのインスタンスを作成し、そのインスタンスにメモリのチャンクを割り当てます。次に、init の使用とは?

前もって感謝します。

4

3 に答える 3

4

alloc : 作成するオブジェクトにメモリを割り当て、保持カウントを増やします

init : 作成したオブジェクトを、指​​定した場合はカスタム値とプロパティで初期化し、それ以外の場合はデフォルト値とプロパティで初期化します

于 2012-09-16T08:07:18.863 に答える
4

それでは、initの使用は何ですか?

シンプル: alloc がしないことをします (できなかったからです)。カスタムインスタンス変数を初期化し、プロパティをデフォルト値に設定するなど...

于 2012-09-16T08:07:51.497 に答える
3

alloc メソッドは割り当てを行い、保持カウントを 1 増やします。 +alloc によって返されたものは、どこかで解放する必要があります。

init は、割り当て後にオブジェクトを初期化する責任があります。メッセージ化されたオブジェクトの保持カウントを消費し、保持カウント +1 (1 ではなく「プラス 1」) のオブジェクトを生成します。init から返された結果は、正しく管理するために解放する必要があります。

ちなみに +alloc はクラスメソッドで -init はインスタンスメソッドです

于 2012-09-16T08:09:00.030 に答える