在if语句中分配的警告?

nmo*_*ock 1 xcode objective-c

当我分配变量而不是检查相等时,有没有办法得到警告?有很多次我不小心分配,而不是比较,并且发出警告会很棒!

有没有办法Xcode可以警告我,而不必将编码样式更改为:

if (YES == aVariable) {...}
Run Code Online (Sandbox Code Playgroud)

rob*_*off 9

如果您在大多数情况下使用=而不是==if语句中使用,Xcode已经警告过您.如果您没有收到警告,请告诉我们您正在使用的Xcode版本,项目的年龄以及您从默认设置更改的构建设置.

我的测试:我在Xcode 4.5.2中创建了一个全新的iOS应用程序,并没有更改任何构建设置.我刚刚添加了一些代码application:didFinishLaunchingWithOptions:来触发警告.这里是:

使用赋值的结果作为没有括号的条件

您可以通过设置编译器的-Wno-parentheses标志来禁用警告(但为什么要这样做?).您可以通过在作业周围添加一组额外的括号来抑制特定情况下的警告:

if ((x = 7)) {
Run Code Online (Sandbox Code Playgroud)

在两种情况下,默认情况下您不会收到警告.首先,在一个init方法中,您可以分配给self,如下所示:

- (id)init {
    if (self = [super init]) {     // no warning by default
    ...
Run Code Online (Sandbox Code Playgroud)

其次,在任何上下文中,您都可以分配nextObject选择器的结果,如下所示:

while (object = [enumerator nextObject]) {    // no warning by default
Run Code Online (Sandbox Code Playgroud)

您可以通过设置编译器的-Widiomatic-parentheses标志在这些情况下启用警告.