2

私は客観的な c で iOS プログラムを書いており、次の特性を持つ配列が必要です。

1) 実行時に形状を決定する必要があります。

2) object-c クラス内のプロパティまたはグローバルとして格納できる必要があります。

3)特定のインデックスにオブジェクトを挿入すると、そのインデックスにとどまる必要があります。 たとえば、インデックス 5 に挿入する場合、オブジェクトはインデックス 5 にあるものを上書きし、この要素または他の要素をシフトしない必要があります(Java 配列の動作と同様)。

NSMutableArray を見てきましたが、挿入すると要素がシフトするため、上記の説明に合わないようです。私も試しましNSString *myArray = malloc(10 * sizeof(NSString *));たが、これにより、ブリッジされたキャストが必要であるというエラーが発生します。そして、私はそれが何であるかを知りません。

それが問題になる場合に備えて、私はARCを使用しています。

4

2 に答える 2

8

1)nameOfMyArray = [[NSMutableArray alloc] initWithObjects:@"obj1", @"obj2", "obj3",nil];

3)挿入操作を行う代わりに、単に置換操作を行ってみませんか?

[nameOfMyArray replaceObjectAtIndex:0 withObject: @"newObject here"];
于 2012-06-07T14:32:04.977 に答える
3

典型的な NSMutableArray の動作が必要なようです。

NSMutableArray *arr = [[NSMutableArray alloc] init];
// add a few objects, let's assume there are 10 objects
[arr replaceObjectAtIndex:5 withObject:myObject];

replace メソッドを使用すると、何もシフトされません。あなたのコードは C に似ており、Objective-C のようではありません。本やドキュメントを読んで、Objective-C オブジェクトの使用方法を理解することをお勧めします。Objective-C オブジェクトを malloc することはなく、alloc クラス メソッドを使用する必要があります。

于 2012-06-07T14:33:14.207 に答える