使用这样的代码:
- (nonnull NSString *)testing {
return nil;
}
我不应该收到编译器警告吗?我没有得到任何警告,这似乎使整个可空性的东西看起来毫无用处?
答案 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?”。