whi*_*vin 4 objective-c llvm clang
在我阅读了一些Objective-c代码之后,我发现这句话在界面之上,有人能告诉我其含义,或者感谢给出一些关于clang的教程,非常感谢
在较新版本的Objective-C编译器(clang)中,参数,返回值,变量和属性可以定义为允许或不允许空值.
这通常通过添加_Nullableor _Nonnull属性为声明中的每个指针完成:
int fetch(int * _Nonnull ptr);
Run Code Online (Sandbox Code Playgroud)
这意味着您无法传递nil给该fetch功能.
例如,有时您可能希望每个(或大多数)指针都是非空的.必须添加_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和nullability属性的更多信息.
| 归档时间: |
|
| 查看次数: |
1056 次 |
| 最近记录: |