在我阅读了一些Objective-c代码之后,我发现这句话在界面之上,有人可以告诉我其含义,或者感谢给出一些关于clang的教程,非常感谢
答案 0 :(得分:5)
在较新版本的Objective-C编译器(clang)中,参数,返回值,变量和属性可以定义为允许或不允许空值。
通常通过添加_Nullable
或_Nonnull
属性为声明中的每个指针执行此操作:
int fetch(int * _Nonnull ptr);
这意味着您无法将nil
传递给fetch
功能。
例如,有时您可能希望每个(或大多数)指针都为非null。将_Nonnull
添加到头文件中的每个指针都很繁琐。为了使这更容易,您可以在文件的开头添加pragma,在结尾添加相应的end pragma。这将默认所有指针都为非null。如果您需要一个或两个可以为空,则可以将_Nullable
添加到这些指针中。
在iOS和macOS中,您可以使用NS_ASSUME_NONNULL_BEGIN
和NS_ASSUME_NONNULL_END
代替_Pragma("clang assume_nonnull begin")
和_Pragma("clang assume_nonnull end")
。
当然还有"可空的"如果您希望所有内容都默认为可为空而不是非空。
您可以在https://clang.llvm.org/docs/AttributeReference.html#nullability-attributes
了解有关clang和可空性属性的更多信息