是否有必要在将变量与另一个变量进行比较之前为变量赋值?

时间:2009-08-19 22:34:31

标签: objective-c cocoa-touch variables

我想将NSString的值与字符串“Wrong”进行比较。这是我的代码:

NSString *wrongTxt = [[NSString alloc] initWithFormat:@"Wrong"];
if( [statusString isEqualToString:wrongTxt] ){
     doSomething;
}

我真的必须为“错误”创建一个NSString吗?

另外,我可以将UILabel的{​​{1}}的值与字符串进行比较而不将标签值分配给字符串吗?

4 个答案:

答案 0 :(得分:178)

  

我真的必须为“错误”创建一个NSString吗?

不,为什么不这样做:

if([statusString isEqualToString:@"Wrong"]){
    //doSomething;
}

使用@""只会创建一个字符串文字,这是一个有效的NSString

  

另外,我可以将UILabel.text的值与字符串进行比较而不将标签值分配给字符串吗?

是的,您可以执行以下操作:

UILabel *label = ...;
if([someString isEqualToString:label.text]) {
    // Do stuff here 
}

答案 1 :(得分:26)

if ([statusString isEqualToString:@"Wrong"]) {
    // do something
}

答案 2 :(得分:8)

Brian,也值得投入 - 其他人当然是正确的,你不需要声明一个字符串变量。但是,下次要声明字符串时,不需要执行以下操作:

NSString *myString = [[NSString alloc] initWithFormat:@"SomeText"];

虽然上面的方法有效但它提供了一个保留的NSString变量,然后在完成使用后需要显式释放它。

下次你想要一个字符串变量时,你可以用一种更方便的方式使用“@”符号:

NSString *myString = @"SomeText";

当你完成它时,这将自动释放,这样你也可以避免内存泄漏......

希望有所帮助!

答案 3 :(得分:2)

您还可以使用NSString类方法,这些方法还将创建一个自动释放的实例,并提供更多选项,如字符串格式:

NSString *myString = [NSString stringWithString:@"abc"];
NSString *myString = [NSString stringWithFormat:@"abc %d efg", 42];