【发布时间】:2017-01-16 19:49:11
【问题描述】:
我正在努力为头文件的一部分添加一些可空性注释,并且我希望该块假定为非空,但之后几乎所有方法都发出警告说我需要添加可空性注释。
下面的示例代码:
NS_ASSUME_NONNULL_BEGIN
- (void)testMethodWithParameter:(NSString *)par otherParameter:(NSString *)otherPar;
NS_ASSUME_NONNULL_END
- (void)methodThatShouldntNeedAnnotationWithText:(NSString *)txt;
//Warning: Pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)
我是否错误地理解了这些宏?我以为它会包含据说在 BEGIN/END 块内被审计的部分,但外面的一切仍然是 _Null_unspecified
这是按预期工作吗,还是我必须做些什么才能使这项工作按我的想法进行?
【问题讨论】:
-
我不知道这是不是故意的,但我也观察到了。只要您在接口文件中有 any 可空性注释,就必须在该文件中定义可空性 everywhere。
-
至少从我对其工作原理的印象来看,
NS_ASSUME_NONNULL_END似乎在界面中没有做任何事情。 Apple Swift 博客的示例代码显示了@interface之前的BEGIN和@end之后的END(用于接口)。也许它并不意味着只用于接口的一部分。
标签: ios objective-c swift xcode objective-c-nullability