在Objective-C中,nullable
、__nullable
和_Nullable
是用于Swift兼容的可选性注释。它们的作用都是指示某个类型的对象或值可能是nil
(空值),同样也可以为空值的指针。
-
nullable
是Objective-C 2.0中引入的关键字,用于声明方法、属性和函数参数可能返回或接受nil
值的情况。
- (nullable NSString *)getNullableString;
@property (nullable, weak) id<SomeDelegate> delegate;
-
__nullable
与nullable
作用类似,它是为了兼容Swift而引入的。在Swift中,它的值可以为空(可选类型),而在Objective-C中它仅表示指定的类型可以为空。
- (NSString * __nullable)getNullableString;
@property (weak, nullable) id<SomeDelegate> delegate;
_Nullable
是最新的关键字,是为了解决一些代码编辑器或编译器对nullable
和__nullable
的错误提示。它等价于__nullable
。
总之,nullable
、__nullable
和_Nullable
都是用来标记某个值的可选性,以便编译器和开发者可以更好地识别和处理空值。