认识Block
2015-11-16 17:29
246 查看
什么是Block?
Block是一种特殊的数据类型,就是一个代码块,可以用于回调。Block定义格式
返回值类型(^block变量名)(形参列表) = ^(形参列表){}
调用
block变量名(实参列表);
如
[code]void(^myBlock)(void) = ^(){ NSLog(@"我是一个block"); }; myBlock();
Block的模式
无参数无返回值的Block无参数有返回值的Block
有参数无返回值的Block
有参数有返回值的Block
Block使用注意点
虽然说ARC是自动管理内存,但是如果我们使用Block不正确,会引起循环引用导致内存泄露,因此得结合下面一个小点 Block的修饰Block的修饰
此处的详细内容见__weak和__block的区别Block的使用范例
无参数无返回值的Block[code]/** 1. 无参数无返回值 */ 2. (void)funcOne { void(^emptyBlock)() = ^{ NSLog(@"无参数无返回值block"); }; emptyBlock(); }
无参数有返回值的Block
[code]/** * 无参数有返回值 */ - (void)funcTwo { int(^myBlock)() = ^{ return 2; }; NSLog(@"%d",myBlock()); }
有参数无返回值的Block
[code]/** * 有参数无返回值 */ - (void)funcThree { void(^myBlock)(int,int) = ^(int a,int b){ NSLog(@"%d+%d=%d",a,b,a+b); }; myBlock(3,4); }
有参数有返回值的Block
[code]/** * 有参数有返回值 */ - (void)funcFour { NSString *(^myBlock)(int,int) = ^(int a,int b){ return [NSString stringWithFormat:@"hello,%d and %d",a,b]; }; NSLog(@"%@",myBlock(3,4)); }
本文没有对Block做过多的现实研究,只是讲解基本的用法。纯粹基础知识。结合实际项目怎么去做举例。Block使用场景,可以在两个界面的传值,也可以对代码封装作为参数的传递等。用过GCD就知道Block的精妙之处。Block作为参数传递的情况没有写了,如果有补充或者有疑问的,欢迎讨论!
相关文章推荐
- RelativeLayout用到的一些重要的属性
- 关于省市区的下拉列表联动实现(JS+AJAX)
- JavaScript变量存储浅析(一)
- SQLite-高级-事务(Transaction)
- 关于Qt中使用线程的时候函数具体在哪个线程中运行的问题
- >/dev/null 2>&1 这句话的含义
- 第12周项目三广度优先遍历算法实现
- SQL.Mysql中Cast()函数的用法
- 如何利用Xcode自带的方法生成二维码
- 第十周--数据结构--二叉树算法库
- 苹果加急审核步骤
- int ,long , long long, __int64类型的范围
- 栈和队列7 – 数据结构和算法29
- web服务鉴权的一种实现方法
- iOS开发UI篇—CAlayer(自定义layer)
- 转:Nginx+Apache环境的安装与配置
- 【转】Hashtable排序的几种方法
- 不让activity显示UI的办法
- android UI-EditText的长度监听慎用TextWatcher
- sqlite-C编程-error-