5

使用这样的代码:

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

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

4

2 回答 2

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)

于 2016-09-20T23:18:03.580 回答
0

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

于 2016-03-17T13:58:24.757 回答