我在Objective-C中编写了一套工具,Swift有时会使用这些工具,因此我使用的是泛型和可空性。在这种情况下我该怎么办?
- (NSArray<MyObj *> * __nullable)foo:(NSError **)error;
目前,我收到警告:两个指针均为
Pointer is missing a nullability type specifier...
!我几乎可以确定我不应该这样做:- (NSArray<MyObj *> * __nullable)foo:(NSError * __autoreleasing __nullable * __nullable)error;
是吗
最佳答案
Swift博客条目Nullability and Objective-C指出:
但是,此注释被列为规则的异常(exception)。
的“经审核的地区”,似乎仅适用于
审核区域:
NS_ASSUME_NONNULL_BEGIN
@interface MyClass : NSObject
- (NSArray<MyObj *> * _Nullable)foo:(NSError **)error;
@end
NS_ASSUME_NONNULL_END
在审核区域内,任何简单的指针类型都将被假定为
nonnull
(除了NSError
的上述异常(exception))。在审核区域之外,您实际上必须明确地编写
- (NSArray<MyObj *> * _Nullable)foo:(NSError * _Nullable * _Nullable)error;
以避免有关缺少可空性类型说明符的警告。
(
_Nullable
是Xcode 7中使用的较新语法,并替换了__nullable
。)关于objective-c - NSError,Swift和可为空性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33198597/