Objective-C输出参数的可空性

时间:2016-06-03 15:58:32

标签: objective-c

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

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

起初我尝试(nonnull NSString**),经过几轮Xcode建议的修复后,以(NSString* _Nonnull *)结束,但第二个*仍有警告,“指针缺少可空性类型说明符” ,没有建议的修复。

1 个答案:

答案 0 :(得分:10)

你有两个指针,所以你需要两个可空性说明符。

- (void)someMethod:(NSString * _Nullable * _Nonnull)out

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

这将失败:

[someObject someMethod:nil];

这将有效:

NSString *result = nil;
[someObject someMethod:&result];