gpt4 book ai didi

objective-c - 这个: _Pragma ("clang assume_nonnull begin")是什么意思

转载 作者:太空狗 更新时间:2023-10-30 04:00:51 24 4
gpt4 key购买 nike

看了一些Objective-c的代码,发现界面上面有这句话,谁能告诉我是什么意思,或者感谢提供一些关于clang的教程,非常感谢

最佳答案

在较新版本的 Objective-C 编译器 (clang) 中,参数、返回值、变量和属性可以定义为允许或不允许空值。

这通常通过添加 _Nullable_Nonnull 属性为声明中的每个指针完成:

int fetch(int * _Nonnull ptr);

这意味着您不能将 nil 传递给 fetch 函数。

例如,有时您可能希望每个(或大多数)指针都为非空。必须将 _Nonnull 添加到头文件中的每个指针会变得乏味。为了使这更容易,您可以在文件的开头添加编译指示,并在末尾添加相应的结束编译指示。这会将所有指针默认为非空。如果您随后需要一两个可以为 null 的指针,则可以将 _Nullable 添加到这些指针中。

在 iOS 和 macOS 中,您可以使用 NS_ASSUME_NONNULL_BEGINNS_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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com