NSarray を作成するためにクラス メソッドを使用するか、インスタンス メソッドを使用するかどうかはわかりません....つまり、それらを作成する方法はたくさんあるということです.ios 開発の初心者で申し訳ありません。
3 に答える
ARC を使用している場合、違いはありません。たとえば、次の 2 行は同じものを返します。
[[NSArray alloc] initWithObject:myObject];
[NSArray arrayWithObject:myObject];
唯一の違いは、後者が自動解放されたオブジェクトを返すことです。これは、ARC を使用している場合、他のオブジェクトと同じ方法で処理する必要があります。retain
そうでない場合は、返されたオブジェクトの所有権が必要な場合に備えて、コードの 2 行目に追加する必要があります。
NSArray などを取得するには、基本的に 3 つの方法があります。
- 標準の割り当て/初期化。少なくとも概念的に
[NSArray alloc]
は、NSArray のクラス メソッドの呼び出しであり、結果として得られるオブジェクトは、そのinit..
ステップの特別な形式のインスタンス メソッドを呼び出します。 [NSArray arrayWithSomethingOrAnother..]
. これは、NSAArray のクラス メソッドを呼び出します。このクラス メソッドは、alloc/init を内部的に実行し (少しひねりを加えて)、必要に応じてオブジェクトを「塗りつぶします」。[someObject arrayByDoingSomething..]
. これは、NSArray を返す何らかのオブジェクト (NSArray オブジェクトである場合とそうでない場合があります) のインスタンス メソッドです。
実際には、(2) と (3) が重複するケースはそれほど多くありません。同様の NSString 関数についてはいくつかありますが、NSArray のオフハンドを考えることはできません。また、純粋主義者はクラス メソッドよりも古い alloc/init を好むかもしれarrayWith...
ませんが、ARC 環境の NSArray で alloc/init を使用する実際の必要性はあまりありません (ただし、手動参照カウント環境ではまだその場所があります)。
任意のプログラミング言語で作成する方法で NSArray または文字列を作成します。つまり、メモリを割り当てます --> インスタンス変数を必要な状態に初期化します。
たとえば、配列を作成できます。
NSArray *myArray = [[NSArray alloc] init];
これで、他のクラス メソッドも使用できたはずです。たとえば、NSString を取り上げてみましょう。NSString *myString = [NSString stringwithformat:@"%@ - これは私の文字列です -%@",@"<--",@"-->"];
現在ARCを使用していますが、クラスメソッドは通常自動解放されるため、作成されたオブジェクトの解放はARCが処理するため、大きな違いはありません。