如何连接在Objective-C(iPhone)字符串? [重复]
-
18-09-2019 - |
题
<强>可能重复:强>结果 如何串连在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]]];
}
正如你可能会看到,我很困惑。请请帮我出:(
解决方案
尝试这种情况:
NSMutableString* theString = [NSMutableString string];
for (int i=0; i<=10;i++){
[theString appendString:[NSString stringWithFormat:@"%i ",i]];
}
label.text = theString;
其他提示
由于您使用的一个循环,不与汤姆和Benjie的解决方案有所谨慎。他们每个人都创建每次迭代一个额外的自动释放的对象。对于一个小的循环,这很好,但如果环的大小是无界的,或者如果字符串大,这会导致非常大的内存穗性能损失。特别是在iPhone上,这正是一种形式的循环,可导致因短暂的记忆尖峰奇怪的内存问题。
下面的解决方案具有更小的内存占用(它也稍快和花费较少的打字)。注意调用-appendFormat:
而非-appendString
。这避免了创建将被扔掉的第二串。请记住,最后的字符串有在您可能想摆脱的末尾一个额外的空间。您可以通过不同地处理所述第一或最后一次迭代,或通过在循环之后修整最后空间解决这个问题。
NSMutableString* theString = [NSMutableString string];
for (int i=0; i<=10;i++){
[theString appendFormat:@"%i ",i];
}
label.text = theString;
不要忘记[NSArray componentsJoinedByString:]
。在这种情况下,你没有一个NSArray,但在你做常见的情况,这可能是让你在找什么最好的方法。
//NSArray *chunks
string = [chunks componentsJoinedByString: @","];
不使用的NSMutableString另一种方法:
NSString* theString = @"";
for (int i=0; i<=10;i++){
theString = [theString stringByAppendingFormat:@"%i ",i];
}
label.text = theString;
下面是一个完整的实现(修正你的范围):
-(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;
}
您也可以做这样的(例如,如果你想用英文逗号分隔):
-(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:@", "];
}
不隶属于 StackOverflow