从NSString Warning分配NSMutableString

时间:2014-03-09 03:22:55

标签: ios objective-c nsstring nsmutablestring

我的程序中有以下三行代码:

NSMutableString *stringOne = [NSMutableString stringWithFormat:@"Hello "];
NSMutableString *stringTwo = [NSMutableString stringWithFormat:@"World"];
NSMutableString *sayIt = [stringOne stringByAppendingString:stringTwo];

尽管它有效,但第三行导致警告从NSString *分配NSMutableString *。

我在这里不知所措,因为我使用的是NSMutableString。

2 个答案:

答案 0 :(得分:7)

不完全。 stringByAppendingString不会返回NSMutableString。而是执行以下操作:

NSMutableString *sayIt = [NSMutableString stringWithString:stringOne];
[sayIt appendString:stringTwo];

或者

NSMutableString *sayIt = [[stringOne stringByAppendingString:stringTwo] mutableCopy];

答案 1 :(得分:2)

我刚刚意识到stringByAppendingString:尽管从NSString对象调用它,但仍返回NSMutableString。由于我正在处理NSMutableString,我应该使用该类的appendString:方法。无警告的新代码是:

NSMutableString *stringOne = [NSMutableString stringWithFormat:@"Hello "];
NSMutableString *stringTwo = [NSMutableString stringWithFormat:@"World"];
[stringOne appendString:stringTwo];