我有一种情况,我想分配一个 NSString 对象,并在 if-else 块内为其分配文本。当我编写这样的代码时:
NSString *string = [NSString alloc];
if (firstCase)
[string initWithString:@"firstCase"];
else if(secondCase)
[string initWithString:@"secondCase"];
[self someFunction:string];
我得到一个错误someFunction
(当我尝试使用时抛出一个 NSInvalidArgumentException string
)。此外,当我单步执行我的代码时,一旦我进入someFunction
,控制台会生成一行内容:
你忘了嵌套alloc和init吗?
这是指string
.
我使用 NSMutableString 尝试过同样的事情,string = [[NSMutableString alloc] init]
只是在每个 if-else 块中执行并附加到字符串,但我想知道是否有人知道为什么以前的方法不会产生相同的结果。