我在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/

10-12 01:22
查看更多