2015-07-10 1 views
4

У меня есть APIИспользование допустимость пустых с API для блока на основе

+ (void)getTheThing:(nonnull void (^)(NSString * __nullable thing, NSError * __nullable error))completion;

(синтаксис, взятый из here)

Но когда идут, чтобы использовать его, и воспользоваться блоком автозаполнения Xcode, он autocompletes к это:

[MyAPI getTheThing:^nonnull void(NSString * __nullable, NSError * __nullable) { 
    <#code#> 
}]; 

Что дает ошибки для nonnull быть не распознан, то есть не аргумент п ames и т. д.

Любая идея, что происходит? : S Я заявляю, что это неправильно? Этот материал довольно новый, и documentation на самом деле не заполнен:/

ответ

5

Любая идея, что происходит?

подразделено http://www.openradar.me/20835509

Могу ли я объявляя это неправильно?

Вы можете аннотировать блоки, как это:

+ (void)getTheThing:(void (^__nonnull)(NSString * __nullable thing, NSError * __nullable error))completion;

Тогда автозаполнения будет производить этот код:

[MyAPI getTheThing:^(NSString * __nullable, NSError * __nullable) { 
    <#code#> 
}]; 

Он по-прежнему нарушается, хотя. Вероятно, быстрее было бы просто забыть об автозаполнении и скопировать и вставить объявление блока.

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

Существует больше информации о llvm сайте, но по-прежнему не хватает информации о блоках.

Смежные вопросы