如何在(NSError **)error
的以下声明中将可空性关键字与多级指针类型相关联?
- (void)loadSessionForUserId:(nonnull NSString *)userId error:(NSError **)error {
...
}
我想让错误可以为空并摆脱“Pointer is missing a nullability type specifier (__nonnull or __nullable)”
答案 0 :(得分:1)
如果要添加显式可为空性,则需要将_Nullable
应用于最外层(最后)指针。但这是间接指针的默认值,所以它不应该是必要的。您当前的代码是正确的,也是首选。
- (void)loadSessionForUserId:(nonnull NSString *)userId error:(NSError ** _Nullable)error;
答案 1 :(得分:0)
如果您收到警告,或者在Xcode 9上为项目启用了treat-warning-as-error,则会出现错误。使用此格式表示多级指针:
Merged Array
(
[0] => Array
(
[Date] => 2017-10-12
[Amount] => 130.00
[Ref] => 60
[Description] => Water Bill Oct
[Id] => 60
[Name] => Water Authority
)
[1] => Array
(
[Date] => 2017-10-10
[Amount] => 130.00
[Ref] => 63
[Description] => Gas
[Id] => 63
[Name] => Service Station
)
and so on...
a)error:(NSError *_Nullable* _Nullable)error
导致编译时错误
error:(NSError ** _Nonnull)error
b)Nullability keyword 'nullable' cannot be applied to multi-level pointer type 'NSError *__autoreleasing *’
导致编译时错误
error:(NSError * _Nonnull *)error
c)Pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)
编译时错误error:(NSError ** _Nullable)error
打开Radar for NSError **没有可空性类型显示为无法抑制的警告 http://www.openradar.me/21766176