web-dev-qa-db-ja.com

iPhone用Objective Cで文字列の配列を作成する方法

ランダム化でき、特定のx個の文字列に制限できる文字列の配列を作成しようとしています。

配列をランダム化できる場合は、最初のx個の文字列を選択できますが、それは正常に機能します。

私は現在、このようなコードを使用しようとしています

NSString *statements[9];
statements[0] = @"hello";

これは機能しているように見えますが、配列はごみデータでいっぱいのようです。

誰かが正しい方向に私を助けることができます。 (メモリ割り当ては間違った方法で行われていますか?

ありがとう

31
Chris Barry

9つの文字列を含む配列が必要ですか?

[NSArray arrayWithObjects: @"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", nil]
68

Xcode 4.4の時点では、はるかにクリーンで読みやすい配列リテラルを使用できます。 「nil」を含める必要がなくなりました。例えば:

NSArray *myArray = @[@"1", @"2", @"3", @"4", @"5"];
53
Johnny Oshika

そのようなすべてのC自動配列は、埋めるまでゴミでいっぱいになります。後でゴミでいっぱいにならない限り、すべてが期待どおりに機能しています。ただし、CocoaにはNSArrayクラスが含まれています。これは、オブジェクトの配列に使用するのがより一般的です(適切なメモリ管理を行い、フレームワークの残りの部分と連携するため)。

2
Chuck

ちょっとしたヒントですが、配列の内容をシャッフルする必要はありません。アクセスをランダム化します。デッキから選択するカードごとに、乱数を選択し、そのインデックスでカードを選択します。次に、一番上のカードを取り出して、選んだカードがあった場所に置きます。

本当に配列をソートしたい場合は、-sortedArrayUsingSelector:ここで、比較メソッドはNSOrderedAscendingまたはNSOrderedDescendingをランダムに返します。

1
NSResponder