使用nonnull时没有警告?

时间:2016-03-17 13:49:00

标签: objective-c nullable non-nullable

使用这样的代码:

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

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

2 个答案:

答案 0 :(得分:1)

嗯,在我看来它应该产生一个警告,但我也不知道要得到一个。

可能有用的是使用Product > Analyze来运行CLANG静态分析器。这应该给出以下提示:

  

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

值得一提的另一件事是设置CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION,在构建设置的Incorrect Uses of Nullable values部分中命名为Apple LLVM 7.1 - Warnings - All languages

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

这个答案涉及Xcode版本7.3.1(7D1014)

答案 1 :(得分:0)

“nonnull”主要是将Objective-C和Swift结合起来。 Swift会将方法的类型转换为“NSString”而不是“NSString?”。