【问题标题】:Handling Poorly Annotated Objective-C Methods?处理注释不佳的 Objective-C 方法?
【发布时间】:2015-11-25 03:50:47
【问题描述】:

我已经有一段时间没有使用 Objective-C(而且我是 Swift 的新手),所以请耐心等待。但是,我注意到一些“可空性注释”要么根本没有意义,要么与 Apple 的文档完全矛盾。以如下NSURL类方法为例:

+ (instancetype)URLByResolvingBookmarkData:(NSData *)bookmarkData 
                                   options:(NSURLBookmarkResolutionOptions)options 
                             relativeToURL:(NSURL *)relativeURL 
                       bookmarkDataIsStale:(BOOL *)isStale
                                     error:(NSError * _Nullable *)error;

您会注意到error 参数中添加了一个注解,因此应该假设该方法已被注解,对吧?

如果是这种情况,人们还可以假设由于relativeToURL 参数没有添加可空性注释,它不可可空。

我真的了解 Objective-C 的新可空性注释吗?

如果是这样,为什么relativeURL 的文档特别说明(粗体格式是我的):

要解析应用范围的书签,请使用 nil 值。

我理解新注释背后的原因,但它们在现有类中的影响如此之大,以至于我不太了解它们的优点。我错过了什么吗?

【问题讨论】:

  • 你的情况很好。向 Apple 提交错误。我认为他们的很多注释都是通过自动化工具完成的。您似乎发现了一个未妥善处理的案例。

标签: objective-c cocoa annotations nsurl objective-c-nullability


【解决方案1】:

如果它说 _Nonnull,它不能是 nil。如果它说 _Nullable,它可以。否则,至少在默认情况下,您不能做出任何假设,IIRC。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多