码迷,mamicode.com
首页 > 移动开发 > 详细

iOS中什么是BLOCK回调函数

时间:2015-10-20 00:08:51      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:

1、回调函数类似通知、委托

2、回调函数声明、实现、回调可以在都一个类中,也可以把回调写到别的类中

3、在A类中声明函数,在实现函数中,达到满足的条件,回调,在B类中的回调函数会被调用,并去处理满足条件的事情

    比如下载,如果下载完成,就触发回调函数,通知B类中的回调函数,传递一个下载完成的参数,B类的回调函数会根据参数       执行相应的代码,如果成功怎么样怎么样,如果失败怎么样怎么样,B类在A类下载过程中完全可以做他自己的事情。

4、例子(伪代码):

A类a.h中声明

-(void)downloadFile:(NSString *)url withStatus:(void(^)(BOOL status))isFileDownloaded;

    url给downloadFile下载提供的url参数,这个应该没疑问吧,就是普通函数的参数,后面的withStatus是一个回调函数,后面我们实现以及被回调的时候看下是怎么写这个参数的,void(^)(BOOL status) 是修饰回调函数isDownloaded的,记住是修饰回调函数的,void(^)声明这个这个回调函数不需要返回值,BOOL status声明回调函数的参数是一个BOOL型的参数status,告诉B类的回调函数,我到底是下载成功还是失败了.

A类a.m中实现

-(void)downloadFile:(NSString *)url withStatus:(void (^)(BOOL))isFileDownloaded{
    //根据url下载文件
    ...
    
    if(downloaded){
    //如果下载成功,触发回调函数,传YES参数
        isFileDownloaded(YES);
    } else {
    //如果下载失败,触发回调函数,传NO参数
        isFileDownloaded(NO);
    }    
}

B类b.m中

我们来写回调函数,到这里应该都能理解了,B类中的回调函数,就是下载完成后被调用的。

[self downloadFile:@"http://xxx.com/xxx.dmg" withStatus:<#^(BOOL status)isFileDownloaded#>];

<#^(BOOL stateus)isFileDownloaded#>

上面回车展开

[self downloadFile:@"ddd" withStatus:^(BOOL status) {
        if(status){
            ...
        } else {
            ...
        }
    }];

在函数里面判断status是YES还是NO,来处理不同的结果!


iOS中什么是BLOCK回调函数

标签:

原文地址:http://my.oschina.net/u/2488509/blog/519103

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!