自从我使用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 。
我理解新注释背后的原因,但他们对现有课程的打击或错过,我不太了解他们的好处。我错过了什么吗?
答案 0 :(得分:1)
如果它说_Nonnull,它不能是零。如果它说_Nullable,它可以。否则,至少在默认情况下,您不能以任何方式做出任何假设,IIRC。