使用块进行来自不同类的回调

时间:2013-07-23 16:01:36

标签: objective-c callback block

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

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

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

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

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

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

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

[ClassName getDataWithCompletion:^(BOOL gotData) {

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

当然,我当时希望NSLog能够打印在我的控制台上,但是唉...我知道我在这里做错了,有人可以指出这一点吗?任何新手级别的解释都将受到高度赞赏。

1 个答案:

答案 0 :(得分:-1)

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

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

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

}

以下是苹果文档apple block documentation

的链接