4

我有一个 API

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

(语法取自这里

但是当使用它并利用 Xcode 的块自动完成功能时,它会自动完成:

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

这给出了nonnull未被识别的错误,没有参数名称等的事实......

知道发生了什么吗?:S 我说错了吗?这些东西相当新,文档并不完整:/

4

1 回答 1

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网站上有更多信息,但关于块的信息仍然不够。

于 2015-07-12T11:46:57.810 回答