黑马程序员技术交流社区
标题: OC学习笔记之block的typedef [打印本页]
作者: chunhuayun 时间: 2015-10-10 08:12
标题: OC学习笔记之block的typedef
1、函数指针
定义格式:
返回类型 (*函数指针名)(参数列表);
【技巧】
1)把函数的声明拷贝过来
2)把函数名换成 (*函数指针变量名)
3)形参名可以不写
【好处】
可以灵活的使用p调用不同的方法
【使用举例】
- int add(int a, int b){
- return a + b;
- }
- int sub(int a, int b){
- return a - b;
- }
-
- int main(int argc, const char * argv[])
- {
- //定义一个函数指针
- int (*p)(int,int);//int (*p)(int a,int b);也行,可以省略参数名
- //给函数指针赋值
- p = add;
- //使用函数指针
- int c = p(1,2);
- NSLog(@"c = %d",c);
- //也可以这样使用
- p = sub;//使函数指针指向另一个方法
- c = (*p)(2,1);
- NSLog(@"c = %d",c);
- return 0;
- }
复制代码
打印结果:
2015-10-07 14:35:42.955 加强02[1231:303] c = 3
2015-10-07 14:35:42.957 加强02[1231:303] c = 1
【给函数指针取别名】
取别名格式:
typedef 返回类型 (*新类型名)(参数列表);
【用别名定义函数指针格式】新类型名 指针变量名;
上述代码可以有如下改动,其他不用变
- //定义一个函数指针
- typedef int (*Func)(int,int);//int (*p)(int a,int b);也行,可以省略参数名
- //给函数指针赋值
- Func p= add;
复制代码2、block的typedef
【格式】
typedef 返回值类型 (^newBlockTypeName)(参数列表);
【例子】
typedef int (^myBlock)(int, int);
【应用举例】
- //【格式】typedef 返回值类型 (^newBlockTypeName)(参数列表);
- //定义一个有参有返回值的block的别名
- typedef int (^myBlock)(int, int);
- //此时myBlock是一个类型,不再是一个单纯的变量了
- myBlock b1 = ^(int a, int b){
- return a + b;
- };
- NSLog(@"a + b = %d", b1(1,2));
复制代码
打印结果:
2015-10-07 14:45:23.489 加强02[1252:303] a + b = 3
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |