使用这样的代码:
- (nonnull NSString *)testing {
return nil;
}
我不应该得到编译器警告吗?我没有收到任何警告,这似乎使整个可空性的东西看起来毫无用处?
使用这样的代码:
- (nonnull NSString *)testing {
return nil;
}
我不应该得到编译器警告吗?我没有收到任何警告,这似乎使整个可空性的东西看起来毫无用处?
好吧,在我看来,它应该会产生一个警告,但我也想不通。
不过,可能有帮助的是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)
“nonnull”主要用于结合 Objective-C 和 Swift。Swift 会将方法的类型转换为“NSString”而不是“NSString?”。