初始化NSString时分离alloc和init

时间:2011-08-09 21:15:44

标签: ios4 nsstring init alloc

我有一种情况,我想分配一个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块中的字符串,但我想知道是否有人知道为什么以前的方式不会产生相同的结果

1 个答案:

答案 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