看了一些Objective-c的代码,发现界面上面有这句话,谁能告诉我是什么意思,或者感谢提供一些关于clang的教程,非常感谢
最佳答案
在较新版本的 Objective-C 编译器 (clang) 中,参数、返回值、变量和属性可以定义为允许或不允许空值。
这通常通过添加 _Nullable
或 _Nonnull
属性为声明中的每个指针完成:
int fetch(int * _Nonnull ptr);
这意味着您不能将 nil
传递给 fetch
函数。
例如,有时您可能希望每个(或大多数)指针都为非空。必须将 _Nonnull
添加到头文件中的每个指针会变得乏味。为了使这更容易,您可以在文件的开头添加编译指示,并在末尾添加相应的结束编译指示。这会将所有指针默认为非空。如果您随后需要一两个可以为 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 和可空性属性的信息
关于objective-c - 这个: _Pragma ("clang assume_nonnull begin")是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42987377/