How to Concatenate String in Objective-C (iPhone)?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
How do I concatenate strings in Objective-C?
首先,平台是iphone和label.text更改显示的标签。考虑这种情况:
我有一个整数数组。我想把它显示在屏幕上。
这是我的看法:
1 2 3 4 5 6 7 8 | -(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]]]; } |
正如你可能看到的,我很困惑。请帮帮我:(
试试这个:
1 2 3 4 5 | NSMutableString* theString = [NSMutableString string]; for (int i=0; i<=10;i++){ [theString appendString:[NSString stringWithFormat:@"%i",i]]; } label.text = theString; |
因为你做的是使用一个循环,两个汤姆和benjie小心点的解决方案。他们每个autoreleased创建额外的对象,通过迭代。一个小循环,那很好,但如果是无界的大小环或如果字符串是大,这可以导致a超大内存和性能的扣球命中。特别在iPhone,这是一个小回路完全可以导致记忆问题的好友挤住记忆,由于短的穗状花序。
下面的解决方案有一个较小的内存占用(它是更快和更准确的测试时间少)。注意在调用
1 2 3 4 5 | NSMutableString* theString = [NSMutableString string]; for (int i=0; i<=10;i++){ [theString appendFormat:@"%i",i]; } label.text = theString; |
不要忘记
1 2 | //NSArray *chunks string = [chunks componentsJoinedByString: @","]; |
另一种方法:使用nsmutablestring
1 2 3 4 5 | NSString* theString = @""; for (int i=0; i<=10;i++){ theString = [theString stringByAppendingFormat:@"%i",i]; } label.text = theString; |
这是一个实现(校正的全范围):
1 2 3 4 5 6 7 8 9 10 | -(IBAction) updateText: (id)sender { int a[3]; a[0]=1; a[1]=2; a[2]=3; NSString *str = @""; for (int i=0; i<3;i++) str = [str stringByAppendingFormat:@"%i",i]; label.text = str; } |
所以,你可以做这样的(例如,如果你想要的列表(逗号分隔):
1 2 3 4 5 6 7 8 9 10 11 | -(IBAction) updateText: (id)sender { int a[3]; a[0]=1; a[1]=2; a[2]=3; NSMutableArray *arr = [NSMutableArray arrayWithCapacity:3]; for (int i=0; i<3;i++) [arr addObject:[NSString stringWithFormat:@"%i",i]]; label.text = [arr componentsJoinedByString:@","]; } |