0

我花了很多时间阅读有关块的内容,但由于某种原因,我很难完全理解它们。值得一提的是,我是一名新手开发人员,但积木是我遇到的第一个真正的“积木”,所以也许你可以帮助我。

我有一个对象(ViewController 的实例)正在与一个类(通过类方法-它是我为请求/获取数据而设置的实用程序类)交谈的情况。我想使用一个块来实现一个带有回调的方法。以下是我基于我的代码的当前“理解”:

  • 块可以作为方法参数传递;
  • 块可以像函数一样被调用。

好的,这是我的实用程序类中的(简化)方法:

+ (void)getDataWithCompletion:(void (^)(BOOL))completion {

    //Some code...
    completion(YES);
}

这就是我从 viewController 调用该方法的方式:

[ClassName getDataWithCompletion:^(BOOL gotData) {

    if (gotData) {
        NSLog(@"Called");
    }
}];

自然,我期待 NSLog 打印在我的控制台上,但是唉......我知道我在这里做错了什么,有人可以指出吗?任何新秀级别的解释都将受到高度赞赏。

4

1 回答 1

-1

错误其实很简单。您忘记了参数名称。
改变你的方法。
(BOOL gotData)这是你错过的。

+ (void)getDataWithCompletion:(void (^)(BOOL gotData))completion {

    //Some code...
    completion(YES);

}

这是苹果文档的链接苹果块文档

于 2013-07-23T16:19:58.813 回答