OC中的block语法
来源:互联网 发布:web前端开发js面试宝典 编辑:程序博客网 时间:2024/05/18 03:03
一)简介
BLOCK是什么?苹果推荐的类型,效率高,在运行中保存代码。用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行。
BOLCK和函数的相似性:(1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样。
二)基本使用
(1)定义BLOCK变量
Int (^SumBlock)(int,int);//有参数,返回值类型为int
Void (^MyBlock)();//无参数,返回值类型为空
(2)利用block封装代码
3)Block访问外部变量
(1)Block内部可以访问外部变量;
(2)默认情况下,Block内部不能修改外部的局部变量
(3)给局部变量加上__block关键字,则这个局部变量可以在block内部进行修改。
4)利用typedef定义block类型(和指向函数的指针很像)
Typedef int(^MyBlock)(int ,int);
以后就可以利用这种类型来定义block变量了。
MyBlock a,b;
a=^(int a,int b){return a-b;};
MyBlock b2=^(int n1,int n2){return n1*n2;};
例子1:
//定义一个block类型的变量,打印n条线 void(^MYblock)(int)=^(int n){ for(int i=0;i<n;i++){ NSLog(@"---------"); } }; MYblock(5); NSLog(@"---结束----"); //定义一个block类型的函数,接受两个参数,做加法运算 int (^ADDblock)(int ,int)=^(int n1,int n2){ return n1+n2; }; NSLog(@"%d",ADDblock(10,20));
结果1:
2015-02-11 09:31:10.180 OCStudy-block[741:16720] ---------2015-02-11 09:31:10.181 OCStudy-block[741:16720] ---------2015-02-11 09:31:10.181 OCStudy-block[741:16720] ---------2015-02-11 09:31:10.181 OCStudy-block[741:16720] ---------2015-02-11 09:31:10.181 OCStudy-block[741:16720] ---------2015-02-11 09:31:10.181 OCStudy-block[741:16720] ---结束----2015-02-11 09:31:10.181 OCStudy-block[741:16720] 30
例子2:
__block int i = 0; int (^count)(void) = ^ { i += 1; return i; }; NSLog(@"%d", count()); // 1 i++; NSLog(@"%d", count()); // 2 NSLog(@"%d", count()); // 3
结果2:
2015-02-11 10:09:37.655 OCStudy-block[869:26096] 12015-02-11 10:09:37.655 OCStudy-block[869:26096] 32015-02-11 10:09:37.655 OCStudy-block[869:26096] 4
0 0
- OC中的block语法
- OC中的Block(块语法)相关知识
- OC语法之Block
- OC语法--block
- oc中的block,认识block
- OC总结-block语法
- OC特有语法—Block
- OC之Block块语法
- OC 6 Block块语法
- OC中的block数据类型
- OC语言中的block
- OC中的Block属性
- OC中的Block,多态
- OC中的block
- OC中的Block
- OC中的block
- OC 中的 block
- 聊聊OC 中的Block
- 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
- Linux下查看文件和文件夹大小
- JS 创建对象(常见的几种方法)
- VMware中Ubuntu忘记密码的解决办法
- IOS程序启动流程
- OC中的block语法
- 关于stack around the variable “” was corrupted问题
- 重新组织函数的九种方法
- 测试测试
- 基本控件:NSAttributedString(CoreText框架)
- 关于内存泄露的追踪
- Linux 查找目录下的所有文件中包含某个字符串 XXX
- HTTP返回状态码
- android程序中的AndroidManifest.xml中的uses-feature详解