使用基于块的API的可空性

时间:2015-07-10 02:41:06

标签: objective-c nullable xcode6.4

我有一个API

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

(从here获取的语法)

但是当它去使用它并利用Xcode的块自动完成时,它会自动完成这个:

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

这会导致nonnull无法识别错误,事实上没有参数名称等......

知道发生了什么事吗? :我告诉我错了吗?这个东西很新,documentation并不完整:/

1 个答案:

答案 0 :(得分: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网站上有更多信息,但仍然没有足够的信息。