r0a*_*ach 21 string iphone objective-c string-concatenation
可能重复:
如何在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]]];
}
Run Code Online (Sandbox Code Playgroud)
你可能已经看到了,我很困惑.请帮我解决:(
Tom*_*ing 36
试试这个:
NSMutableString* theString = [NSMutableString string];
for (int i=0; i<=10;i++){
[theString appendString:[NSString stringWithFormat:@"%i ",i]];
}
label.text = theString;
Run Code Online (Sandbox Code Playgroud)
Rob*_*ier 17
既然你正在使用循环,那么对Tom和Benjie的解决方案都要小心一点.它们每次迭代都会创建一个额外的自动释放对象.对于一个小循环,这很好,但如果循环的大小无限制或字符串很大,这可能会导致非常大的内存峰值和性能损失.特别是在iPhone上,这正是一种循环,由于短暂的内存峰值,可能导致令人惊讶的内存问题.
以下解决方案具有更小的内存占用(它也稍微更快,并且输入更少).注意呼叫-appendFormat:
而不是-appendString
.这可以避免创建将被丢弃的第二个字符串.请记住,最后一个字符串在末尾有一个额外的空间,您可能想要摆脱它.你可以通过不同地处理第一次或最后一次迭代,或者通过修剪循环后的最后一个空格来解决这个问题.
NSMutableString* theString = [NSMutableString string];
for (int i=0; i<=10;i++){
[theString appendFormat:@"%i ",i];
}
label.text = theString;
Run Code Online (Sandbox Code Playgroud)
别忘了[NSArray componentsJoinedByString:]
.在这种情况下,您没有NSArray,但在您常见的情况下,这可能是获得您所需内容的最佳方式.
小智 7
//NSArray *chunks
string = [chunks componentsJoinedByString: @","];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
48146 次 |
最近记录: |