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

Bry*_*yan 85 variables cocoa-touch objective-c

我想将a的值NSString与字符串"Wrong"进行比较.这是我的代码:

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

我是否真的必须为"错误"创建一个NSString?

另外,可我一个的值进行比较UILabeltext一个字符串没有标签值分配给字符串?

Ale*_*ski 178

我是否真的必须为"错误"创建一个NSString?

不,为什么不这样做:

if([statusString isEqualToString:@"Wrong"]){
    //doSomething;
}
Run Code Online (Sandbox Code Playgroud)

使用@""简单地创建一个有效的字符串文字NSString.

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

是的,你可以这样做:

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


Wev*_*vah 26

if ([statusString isEqualToString:@"Wrong"]) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)


h4x*_*xxr 8

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

NSString *myString = [[NSString alloc] initWithFormat:@"SomeText"];
Run Code Online (Sandbox Code Playgroud)

虽然上面的工作正常,但它提供了一个保留的NSString变量,然后在完成使用后需要显式释放它.

下次需要字符串变量时,可以更方便地使用"@"符号:

NSString *myString = @"SomeText";
Run Code Online (Sandbox Code Playgroud)

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

希望有所帮助!

  • 提示位于"alloc"位.如果您使用Alloc(或复制),则必须专门发布.如果不这样做,那么约定就是对象已经设置为autorelease. (2认同)