将NSString附加为另一个NSString的第一行

时间:2011-01-18 10:18:07

标签: objective-c cocoa nsstring

我有两个NSString,A和B.

我希望A成为B \ nA。

我该怎么办?


如果在方法中我使用

NSString *string_B = [[NSString alloc] initWithString:@"something_from_a_DB"];
NSString *string_A = [[NSString alloc] initWithString:@"something_from_a_DB"];

if (aTrueCondition) {
   string_C = [NSString stringWithFormat:@"%@\n%@", string_B, string_A];
} else {
   string_C = string_A;
}

是string_C = string_A;内存泄漏还是不错?


我添加了[string_A release],因为string_C是一个保留属性。现在它有效。

3 个答案:

答案 0 :(得分:5)

这是将它们组合在一起的方式:

NSString *newString = [NSString stringWithFormat:@"%@\n%@", stringB, stringA];

第二部分是“A成为newString”。这很难做到,因为常规字符串在Cocoa中是不可变的。你可以做的最好的事情就是抛弃旧的A并将A指向新的字符串:

NSString *strA = @"foo";
NSString *strB = @"bar";
strA = [NSString stringWith…];

小心不要泄漏A:

NSString *strA = [[NSString alloc] initWithString:@"foo"];
strA = [NSString stringWith…]; // this is a leak

答案 1 :(得分:0)

NSString *str=[NSString stringWithFormat:@"%@\n%@",B,A];

使用它。

答案 2 :(得分:0)

NSString *stringA = [NSString stringWithFormat:@"%@\n%@", stringB, stringA];