22

重複の可能性:
Objective-C で文字列を連結するにはどうすればよいですか?

まず、プラットフォームは iPhone であり、label.text は表示されるラベルを変更します。次のシナリオを検討してください。

私は整数の配列を持っています。そして、それを画面に表示したい。

これが私の見解です:

-(IBAction) updateText: (id)sender {
   int a[2];
   a[0]=1;
   a[1]=2;
   a[2]=3;
   for (int i=0; i<=10;i++)
     label.text = [NSString stringByAppendingString: [NSString stringWithFormat: @"%i", a[i]]]; 
}

ご覧のとおり、私はかなり混乱しています。Pls plsは私を助けてください:(

4

4 に答える 4

36

これを試して:

NSMutableString* theString = [NSMutableString string];
for (int i=0; i<=10;i++){
    [theString appendString:[NSString stringWithFormat:@"%i ",i]];
}
label.text = theString;
于 2009-07-21T12:25:03.753 に答える
17

ループを使用しているため、Tom と Benjie の両方のソリューションに注意してください。それらはそれぞれ、反復ごとに追加の自動解放オブジェクトを作成します。ループが小さい場合は問題ありませんが、ループのサイズが制限されていない場合や文字列が大きい場合は、非常に大きなメモリ スパイクとパフォーマンス ヒットが発生する可能性があります。特に iPhone では、これはまさに、短期間のメモリ スパイクによる驚くべきメモリ問題を引き起こす可能性がある種類のループです。

次のソリューションでは、メモリ フットプリントが小さくなります (また、わずかに高速で、タイピングも少なくて済みます)。-appendFormat:ではなくへの呼び出しに注意してください-appendString。これにより、破棄される 2 番目の文字列が作成されるのを回避できます。最後の文字列の末尾には余分なスペースがあることに注意してください。最初または最後の繰り返しを別の方法で処理するか、ループの後の最後のスペースをトリミングすることで、これを修正できます。

NSMutableString* theString = [NSMutableString string];
for (int i=0; i<=10;i++){
    [theString appendFormat:@"%i ",i];
}
label.text = theString;

忘れないでください[NSArray componentsJoinedByString:]。この場合、あなたは NSArray を持っていませんが、あなたが持っている一般的なケースでは、探しているものを取得するためのおそらく最良の方法です。

于 2009-07-21T14:00:18.230 に答える
7
//NSArray *chunks   
string = [chunks componentsJoinedByString: @","];
于 2010-07-28T13:17:57.580 に答える