2016-06-03 2 views
4

Я добавляю спецификаторы нулевой вероятности для класса, и у меня есть некоторые параметры вывода указателя на указатель, такие как (NSString**), потому что метод возвращает несколько объектов. Как указать для этого значение nullability?Objective-C nullability для выходных параметров

Для этих конкретных случаев я хочу, чтобы вызывающие абоненты не пропускали NULL, но мне все равно, передают ли они указатель на переменную nil (точнее, это ожидается).

Сначала я попробовал (nonnull NSString**), и через пару раундов, предложенные исправления Xcode, в закончилась (NSString* _Nonnull *), но есть еще предупреждение на второй *, «Указатель отсутствует тип допустимости пустых спецификатор», не предложили исправить.

+0

Имейте в виду: допустимость пустых важно для Swift, а не для чистого Objective-C. –

+0

Да, я так хочу, чтобы получить доступ к этому классу из Swift. – Uncommon

+0

Там у вас есть: Код отравления на хорошем языке для совместимости на плохом языке. : -] –

ответ

7

У вас есть два указателя, поэтому вам понадобятся два спецификатора неопределенности.

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

Это означает, что вы должны передать ненулевой указатель, но вы можете вернуть нулевой результат.

Это провал:

[someObject someMethod:nil]; 

Это будет работать:

NSString *result = nil; 
[someObject someMethod:&result]; 
Смежные вопросы