在iOS的开发过程中,Block的回调使用非常普遍,也是Block的重要用法之一。例如,当一段动画播放完成后,执行一段代码,当得到请求的网络数据后,执行一段对数据的操作代码等等。这些场景中,都使用到了Block的回调机制。Block的回调机制,可以使代码的编写变得十分的清晰,提升了代码的可读性。
1、定义带Block参数的方法
创建一个Task类,继承自NSObject;
在.h文件中,添加如下的方法,在该方法中,添加一个Block作为参数。其中,(void(^)(void))表示为一个没有参数和返回值的Block。
#import
@interfaceTask:NSObject
-(void)beginTaskWithCallbackBlock:(void(^)(void))callbackBlock;
@end
2、设置Block的回调时机
在.m文件中,实现该方法。下面的代码中,当方法被调用时,会打印一行Log,提示任务开始。3秒钟后,会调用Block中的代码。
#import "Task.h"
@implementationTask
-(void)beginTaskWithCallbackBlock:(void(^)(void))callbackBlock{
NSLog(@"Begin Task! After 3s Finish!");
dispatch_after(dispatch_time(DISPATCH_TIME_NOW,(int64_t)(3.0*NSEC_PER_SEC)),dispatch_get_main_queue(),^{
callbackBlock();
});
}
@end
3、使用Block定义动作/行为
在上面一段代码的实现过程中,最关键的是定义了Block的调用时机,但没有定义Block的代码内容。Block中的代码内容,可以在使用该方法时进行赋值。在下面的代码中,当执行到Block时,打印一行日志,提示任务完成。
Task*task=[[Taskalloc]init];
[task beginTaskWithCallbackBlock:^{
NSLog(@"Task End!");
}];