Objective-C输出参数的可空性

Unc*_*mon 5 objective-c

我正在为类添加nullability说明符,并且我有一些指针到指针的输出参数,例如(NSString**),因为该方法返回多个对象.如何为此指定可为空性?

对于这些特殊情况,我希望调用者不传入NULL,但我不关心它们是否传递指向nil变量的指针(或者更确切地说,是预期的).

起初我尝试了(nonnull NSString**),经过几轮Xcode的建议修复后,结束了(NSString* _Nonnull *),但是第二个*仍然有警告,"Pointer缺少可空性类型说明符",没有建议修复.

rma*_*ddy 10

你有两个指针,所以你需要两个可为空的说明符.

- (void)someMethod:(NSString * _Nullable * _Nonnull)out
Run Code Online (Sandbox Code Playgroud)

这意味着您必须传入非空指针,但您可能会返回null结果.

这将失败:

[someObject someMethod:nil];
Run Code Online (Sandbox Code Playgroud)

这将有效:

NSString *result = nil;
[someObject someMethod:&result];
Run Code Online (Sandbox Code Playgroud)