自从我使用 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/