MyClass 型の 10 個のオブジェクトの固定サイズで配列を宣言する方法と、効率、コーディングの容易さ、またはその他のためのこれらのさまざまな代替手段の意味がわかりません。
...新しい xCode4.4 機能を念頭に置いてください。特に:
- NSArray および NSDictionary クラスでは、Objective-C リテラルがサポートされています。
- Objective-C コンテナー オブジェクトでは、'[ ]' 構文を使用した添字付けがサポートされています。
...そしてもちろんARCを使用
特に、結果としてこれらの配列を返すコンストラクター メソッドを記述する必要があります。
代替案1
MyClass* objectOfMyClass;
MyClass* array1[10];
array1[5] = objectOfMyClass;
メソッドの宣言:
- (MyClass*[]) createArray { <--- is this declaration correct like this ?
ps。私の知る限り、これらの配列はスタックメモリに置かれていますが、よくわかりません!
代替案2
MyClass* objectOfMyClass;
NSMutableArray *array2 = [[NSMutableArray alloc] init];
for (int i = 0; i<10; i++)
[array2 addObject:objectOfMyClass]; //objects get added in some way...
//can't directly access nTh object in this case, need to add from 0 to 9
//conversion to non mutable array, since size will not change anymore
NSArray *array3 = [NSArray arrayWithArray:array2];
メソッドの宣言:
- (NSArray*) createArray {
ps。私の知る限り、これらの配列はスタックではなくメインメモリに配置されていますが、よくわかりません!
代替案3
NSArray *array4 = [[NSArray alloc] init];
array4 = ...how to prepare the array so it can hold 10 objects without using NSMutableArray ?
otherwise I do not see a difference to alternative 2...
for (int i = 0; i<10; i++)
array4[i] = objectOfMyClass];
メソッドの宣言:
- (NSArray*) createArray {
これに光をもたらしてくれてありがとう!