Как использовать ненулевые и обнуляемые ключевые слова Objective C в блочном методе API

Рассмотрим следующий метод

- (void)methodWithArg:(NSString *)arg1 andArg:(NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler;

С новымnonnull а такжеnullable ключевые слова аннотации мы можем обогатить его следующим образом:

- (void)methodWithArg:(nonnull NSString *)arg1 andArg:(nullable NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler;

но мы также получаем это предупреждение:

В указателе отсутствует спецификатор типа обнуляемости (__nonnull или __nullable)

Это относится к третьему параметру (блок один).

документация не приводятся примеры того, как задать обнуляемость параметров блока. Это говорит дословно

Вы можете использовать формы без подчеркивания, которые могут иметь значение NULL и NULL, сразу после открытых скобок, если тип является простым указателем на объект или блок.

Я попытался поставить одно из двух ключевых слов для блока (в любой позиции) без какой-либо удачи. Также попробовал варианты с префиксом подчеркивания (__nonnull а также__nullable).

Поэтому мой вопрос: как я могу указать семантику обнуляемости для параметров блока?

Ответы на вопрос(6)

Ваш ответ на вопрос