在比较一个variables之前是否需要分配一个string?

我想将一个NSString的值与string“Wrong”进行比较。 这是我的代码:

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

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

另外,我可以将UILabeltext的值与一个string进行比较,而不将标签值分配给一个string?

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

不,为什么不这样做:

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

使用@""只是创build一个string文字,这是一个有效的NSString

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

是的,你可以做一些事情:

 UILabel *label = ...; if([someString isEqualToString:label.text]) { // Do stuff here } 
 if ([statusString isEqualToString:@"Wrong"]) { // do something } 

布赖恩,也值得在这里扔 – 其他人当然是正确的,你不需要声明一个stringvariables。 但是,下次您要声明一个string时,您不需要执行以下操作:

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

尽pipe上述方法可行,但它提供了一个保留的NSStringvariables,在完成使用后,您需要明确释放它。

下一次你想要一个stringvariables,你可以用一个更方便的方式使用“@”符号:

 NSString *myString = @"SomeText"; 

当你完成它的时候这将会被自动释放,所以你也可以避免内存泄漏。

希望有所帮助!

你也可以使用NSString类的方法,它也会创build一个自动释放的实例,并有更多的选项,如string格式化:

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