0

クラス メソッドがオブジェクトの割り当てと初期化を行うかどうかは、どうすればわかりますか? 例えば...

NSArray *theArray = [NSArray array];
NSArray *anotherArray = [[NSarray alloc] init];

これら2つの使用の違いは何ですか?どちらも空の配列を作成しませんか?

NSCalendar *theCalendar = [NSCalendar currentCalendar];
NSCalendar *anotherCalendar = [[NSCalendar alloc] init];

オブジェクトを作成するときにどちらを使用するかをどのように判断しますか?

4

1 に答える 1

0

ARC が有効になっているかどうかに違いはありません。

[NSArray 配列] は便利なメソッドです。配列オブジェクトを割り当て、それを初期化し、オブジェクトに自動解放のマークを付けます (後者は、自動参照カウントが無効になっている場合です)。多くのオブジェクトは、インスタンスを作成するためにこれらのタイプのメソッドを提供します。API ドキュメントを参照して、関心のあるクラスが alloc-init-(autorelease) ショートカットを提供しているかどうか、またはニーズにより適した作成または初期化メソッドがあるかどうかを確認してください。それらを使用してください-それらは短く、コードが読みやすく、ARCがオンかオフかを心配する必要はありません. 独自のクラスに同様のメソッドを記述します。

init 関数でパラメーターを渡す必要がある場合は、特定の alloc-init を使用します。例えば

NSMutableArray ary = [[NSMutableArray alloc] initWithCapacity:50];

またはさらに良い

NSMutableArray ary = [NSMutableArray arrayWithCapacity:50];

繰り返しになりますが、alloc-init ペアは、インスタンス参照カウントを制御したい場合に、ARC の前に役立ちました。

于 2013-08-21T23:09:54.387 に答える