在iPhone SDK中链接stringByAppendingString是否安全且正确?

时间:2012-08-24 16:50:57

标签: iphone objective-c xcode nsstring concatenation

有没有更好的方法在一行中实现连接多个字符串?或者在做这件事时都有任何建议。

NSString *string1 = @"one";
NSString *string2 = @"one";
NSString *string3 = @"one";
NSString *appendedText = @"";

[appendedText = [[string1 stringByAppendingString: string2] stringByAppendingString: string3]

2 个答案:

答案 0 :(得分:1)

安全和正确吗?肯定。

假设你有:

NSString *a = @"hay";
NSString *b = @"bee";
NSString *c = @"see";

您可以使用stringByAppendingString:将它们连接起来:

cat = [a stringByAppendingString:[b stringByAppendingString:c]];

您可以使用stringByAppendingFormat:将它们连接起来:

cat = [a stringByAppendingFormat:@"%@%@", b, c];

您可以使用stringWithFormat:

cat = [NSString stringWithFormat:@"%@%@%@", a, b, c];

您可以将它们放入数组中,然后使用componentsJoinedByString:: (只是为了好玩,使用array literal syntax

array = @[ a, b, c];
cat = [array componentsJoinedByString:@""];

您可以使用可变字符串收集它们:

NSMutableString *temp = [a mutableCopy];
[temp appendString:b];
[temp appendString:b];
cat = [temp copy]; // if you want to make sure result is immutable

所有这些方法都可以。以下是我选择使用的建议:

  1. 使用任何一个使您的代码清晰易读的文件。
  2. 当您的应用正常运行时,请使用工具对其进行分析。
  3. 只有当您发现字符串连接导致性能问题时,请考虑使用其他方法。

答案 1 :(得分:0)

您可以使用stringByAppendingFormat:

[string1 stringByAppendingFormat:@"%@%@",string2,string3]

Here是参考

你也有NSMutableString但是在语法方面它会看起来相同

丹尼尔