objective-c - 处理注释不当的 Objective-C 方法?

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

自从我使用 Objective-C 以来已经有一段时间了(而且我对 Swift 还很陌生),所以请耐心等待。然而,我注意到一些“可空性注释”要么根本没有意义,要么完全与苹果的文档相矛盾。以以下 NSURL 类方法为例:

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

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

如果是这种情况,人们还会认为,由于 relativeToURL 参数没有添加可空性注释,因此它不可可为空。

我实际上理解 Objective-C 的新可空性注释吗?

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

To resolve an app-scoped bookmark, use a value of nil.

我理解新注释背后的原因,但它们对现有类的影响太大,以至于我不太明白它们的好处。我错过了什么吗?

最佳答案

如果它显示_Nonnull,则它不能为零。如果它说 _Nullable,则可以。否则,至少在默认情况下,你不能做出任何假设,IIRC。

关于objective-c - 处理注释不当的 Objective-C 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33908195/

相关文章:

cocoa - NSLayoutConstraint 将 centerX 约束到 super View 的另一侧

iphone - 添加两个在文本字段中作为字符串输入的数字

objective-c - 创建不会阻止与其他窗口交互的工作表

cocoa - 时区转换形式 stringdate

web-services - 使用 Objective C 进行 SOAP 查询

java - 我可以在自己的注释上使用 Spring Security @PreAuthorize 吗?

Java Spring - 注解配置类

java - 我应该如何在现有父级上基于一对多注释的映射中执行更新操作?

ios - 应用内购买验证 - 根据用户验证购买

iphone - reloadData 到底调用了什么?