-1

NSarray を作成するためにクラス メソッドを使用するか、インスタンス メソッドを使用するかどうかはわかりません....つまり、それらを作成する方法はたくさんあるということです.ios 開発の初心者で申し訳ありません。

4

3 に答える 3

4

ARC を使用している場合、違いはありません。たとえば、次の 2 行は同じものを返します。

[[NSArray alloc] initWithObject:myObject];

[NSArray arrayWithObject:myObject];

唯一の違いは、後者が自動解放されたオブジェクトを返すことです。これは、ARC を使用している場合、他のオブジェクトと同じ方法で処理する必要があります。retainそうでない場合は、返されたオブジェクトの所有権が必要な場合に備えて、コードの 2 行目に追加する必要があります。

于 2013-09-24T20:12:55.373 に答える
0

NSArray などを取得するには、基本的に 3 つの方法があります。

  1. 標準の割り当て/初期化。少なくとも概念的に[NSArray alloc]は、NSArray のクラス メソッドの呼び出しであり、結果として得られるオブジェクトは、そのinit..ステップの特別な形式のインスタンス メソッドを呼び出します。
  2. [NSArray arrayWithSomethingOrAnother..]. これは、NSAArray のクラス メソッドを呼び出します。このクラス メソッドは、alloc/init を内部的に実行し (少しひねりを加えて)、必要に応じてオブジェクトを「塗りつぶします」。
  3. [someObject arrayByDoingSomething..]. これは、NSArray を返す何らかのオブジェクト (NSArray オブジェクトである場合とそうでない場合があります) のインスタンス メソッドです。

実際には、(2) と (3) が重複するケースはそれほど多くありません。同様の NSString 関数についてはいくつかありますが、NSArray のオフハンドを考えることはできません。また、純粋主義者はクラス メソッドよりも古い alloc/init を好むかもしれarrayWith...ませんが、ARC 環境の NSArray で alloc/init を使用する実際の必要性はあまりありません (ただし、手動参照カウント環境ではまだその場所があります)。

于 2013-09-24T20:26:19.320 に答える
0

任意のプログラミング言語で作成する方法で NSArray または文字列を作成します。つまり、メモリを割り当てます --> インスタンス変数を必要な状態に初期化します。

たとえば、配列を作成できます。

NSArray *myArray = [[NSArray alloc] init];

これで、他のクラス メソッドも使用できたはずです。たとえば、NSString を取り上げてみましょう。NSString *myString = [NSString stringwithformat:@"%@ - これは私の文字列です -%@",@"<--",@"-->"];

現在ARCを使用していますが、クラスメソッドは通常自動解放されるため、作成されたオブジェクトの解放はARCが処理するため、大きな違いはありません。

于 2013-09-24T20:19:44.617 に答える