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

Sef*_*an2 -1 cocoa objective-c nsstring

我有两个NSString,A和B.

我希望A成为B \n.

我能怎么做?


如果在我使用的方法中

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;
}
Run Code Online (Sandbox Code Playgroud)

是string_C = string_A; 内存泄漏还是好的?


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

zou*_*oul 5

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

NSString *newString = [NSString stringWithFormat:@"%@\n%@", stringB, stringA];
Run Code Online (Sandbox Code Playgroud)

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

NSString *strA = @"foo";
NSString *strB = @"bar";
strA = [NSString stringWith…];
Run Code Online (Sandbox Code Playgroud)

小心不要泄漏A:

NSString *strA = [[NSString alloc] initWithString:@"foo"];
strA = [NSString stringWith…]; // this is a leak
Run Code Online (Sandbox Code Playgroud)