回调函数,本质上也是个函数(搁置函数和方法的争议,就当这二者是一回事)。由"声明"、"实现"、"调用"三部分组成。
再加一部分就变成了回调函数
回调特征:--- 方法的实现不在本类,但是调用在本类
上一个例子:
A.h 文件 //声明回调函数:给指定的员工发放工资 -(void)paySalaryForStaff:(int)staffId withMoney:(void(^)(int salary))amount; //声明回调函数:告诉所有员工周末加班若干小时 -(void)weekEndWillWorkOverTime:(int)hours A.m 文件 -(void)paySalaryForStaff:(int)staffId withMoney:(void(^)(int salary))amount { //code 计算指定员工应该发多少工资 //计算完毕后,触发回调函数,告诉员工已经给其发了5万元的工资 amount(50000); //具体这5万元,员工怎么花,就让员工类来实现 }
B.m -(void)spendMoney { //code 没有钱,做些无聊的事情,等工资中,如打游戏,看电影…… //code 又看了50部电影 //code 设想发了工资怎么花, 创建A类的一个对象a [a paySalaryForStaff:007 amount:^(int salary) { if(salary==50000) { NSLog(@"我靠,这个月绩效满分啊!和朋友庆祝一下!") //code 拿着工资各种败家…… } } ]; }