我有一种情况,我想分配一个NSString对象,并在if-else块内为其分配文本。当我写这样的代码时:
NSString *string = [NSString alloc];
if (firstCase)
[string initWithString:@"firstCase"];
else if(secondCase)
[string initWithString:@"secondCase"];
[self someFunction:string];
我在someFunction
内部收到错误(当我尝试使用string
时抛出NSInvalidArgumentException)。
此外,当我单步执行代码时,一旦我输入someFunction
,控制台就会生成一行说明:
您是否忘记了嵌套alloc和init?
指的是string
。
我尝试使用NSMutableString做同样的事情,只做string = [[NSMutableString alloc] init]
并且只是附加到每个if-else块中的字符串,但我想知道是否有人知道为什么以前的方式不会产生相同的结果
答案 0 :(得分:0)
你是否有可能遇到一个你不满足if和else的要求的情况?您可能想要仔细检查您的案例是什么......或者您可能希望将字符串默认为“”。 编辑:您可以在使用stringByAppendingString
将其声明为某个值后附加到字符串NSString *string = [[NSString alloc] initWithString:@""];
if(case1)
[string stringByAppendingString:@"desired string"];
elseif(case2)
[string stringByAppendingString:@"other string"];
这是一个指向apple的NSString类引用的链接: http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html