一、block作为函数的参数 1.block是1个数据类型,能不能作为函数的参数呢,可以 2.例如,我有1个test函数,现在我要给它定义1个参数,定义1个block类型的参数,什么样的block呢,无参数、无返回值的block main.m文件中 import <Foundation/Foundation.h> //为这个函数定义1个参数,定义1个block类型的参数 //无参数、无返回值的block //如果要给它定义1个int类型的参数,就在小括号里面声明1个int类型的变量就可以了,例如void test(int num) //如果要定义1个float类型的参数,就在小括号里面声明1个float类型的变量就可以了,例如void test(float f1) //如果要定义1个block类型的参数,就在小括号里面声明1个block类型的变量就可以了,例如void test(void (^block1)()) void test(void (^block1)()) { NSLog(@“--------------------”); } int main() { return 0; } 这个时候,我是不是就在test()这个函数的小括号里面,声明了1个无参数、无返回值的block变量了啊,那么这个时候,这个block1就是这个test()函数的参数 这个参数block1是不是存储了代码啊,那么我就执行1下这个参数里的代码,如下: void test(void (^block1)()) { NSLog(@“--------------------”); block1(); NSLog(@“--------------------”); } int main() { return 0; } 3.如何为函数定义1个block类型的参数 1)在函数的小括弧里面,声明1个指定格式的block类型的变量就可以了 2)如果看见上面这个写法有点晕: void test(void (^block1)()){ NSLog(@“----------------”); block1(); NSLog(@“----------------”); } 那就通过typedef把它弄成短格式就可以了