Questions tagged «objective-c-nullability»

4
Objective-C中可为空,__ nullable和_Nullable之间的区别
借助Xcode 6.3,引入了新的注释,以便更好地表达Objective-C中API的意图(当然可以确保更好的Swift支持)。这些注解当然nonnull是nullable和null_unspecified。 但是使用Xcode 7时,会出现很多警告,例如: 指针缺少可为空类型说明符(_Nonnull,_Nullable或_Null_unspecified)。 除此之外,Apple使用另一种可为空性说明符,标记其C代码(source): CFArrayRef __nonnull CFArrayCreate( CFAllocatorRef __nullable allocator, const void * __nonnull * __nullable values, CFIndex numValues, const CFArrayCallBacks * __nullable callBacks); 综上所述,我们现在有以下3种不同的可空性注释: nonnull,nullable,null_unspecified _Nonnull,_Nullable,_Null_unspecified __nonnull,__nullable,__null_unspecified 即使我知道为什么以及在哪里使用哪个批注,我还是对应该使用哪种类型的批注,地点和原因感到困惑。这是我可以收集的: 对于我应该使用性质nonnull,nullable,null_unspecified。 对于我应该使用方法参数nonnull,nullable,null_unspecified。 对于C方法我应该使用__nonnull,__nullable,__null_unspecified。 对于其他情况,如双指针,我应该使用_Nonnull,_Nullable,_Null_unspecified。 但是对于为什么我们有这么多基本上执行相同操作的注释,我仍然感到困惑。 所以我的问题是: 这些注释之间的确切区别是什么?如何正确放置它们?为什么?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.