Objective c 使用非空时没有警告?

Objective c 使用非空时没有警告?,objective-c,nullable,non-nullable,Objective C,Nullable,Non Nullable,代码如下: - (nonnull NSString *)testing { return nil; } 我不应该得到编译器警告吗?我没有收到任何警告,这似乎使整个可空性的东西看起来毫无用处?“非空”主要用于结合Objective-C和Swift。Swift将把方法类型转换为“NSString”而不是“NSString?” 嗯,在我看来,它应该会产生一个警告,但我也不知道该怎么做 不过,使用Product>Analyze运行CLANG静态分析器可能会有所帮助。这将给出以下提示: Null

代码如下:

- (nonnull NSString *)testing {
    return nil;
}

我不应该得到编译器警告吗?我没有收到任何警告,这似乎使整个可空性的东西看起来毫无用处?

“非空”主要用于结合Objective-C和Swift。Swift将把方法类型转换为“NSString”而不是“NSString?”

嗯,在我看来,它应该会产生一个警告,但我也不知道该怎么做

不过,使用
Product>Analyze
运行CLANG静态分析器可能会有所帮助。这将给出以下提示:

Null是从预期返回非Null值的方法返回的

另一件值得一提的事情是在构建设置的
Apple LLVM 7.1-警告-所有语言
部分中设置
CLANG\u WARN\u NULLABLE\u TO\u NONNULL\u CONVERSION
,该设置被命名为
可空值的不正确使用

此设置不会对不正确的返回值产生警告,但在使用参数不正确的方法时会显示警告(例如,对于非null参数为nil)


这个答案指的是Xcode版本7.3.1(7D1014)

对,但即使根本不使用Swift,也应该正确使用?编译器确实会在其他地方使用提示,比如将nonnill属性显式设置为nil。但在这种情况下,没有任何警告。看起来很奇怪。