Blocks 概念预览
来源:互联网 发布:非洲社交软件 编辑:程序博客网 时间:2024/05/20 21:58
Blocks概念预览:Conceptual Overview
Block对象提供了写ad hoc function body的方法,正如C 及 C的派生语言C++和Objective-c等一样。在其他的语言及环境中,块对象有时也称作 闭包。这里它通常俗称为 "blocks", 否则很容易同标准 C 语言中的代码块相混淆。
1. Block的功能
block是内联的代码集合:
。同函数一样有定义类型的参数列表
。有可推测的或者已定义的返回类型
。能够从定义block的词法作用域类获取状态
。能够选择性的编辑词法作用域的状态
。Can share the potential for modification with other blocks defined within the same lexical scope
。Can continue to share and modify state defined within the lexical scope (the stack frame) after the lexical scope (the stack frame) has been destroyed
你可以复制块,甚至将它传递到其他线程延迟执行(或者当前线程的runloop),编译和运行时会在block的所有副本的生命周期中把从block引用的变量保留(The compiler and runtime arrange that all variables referenced from the block are preserved for the life of all copies of the block)。尽管在纯C和C++中也有block,block也总是一个Objective-C对象。
2. Block的使用
block通常是自包含的小的代码片段,这样,在下列情况它们非常有用:作为并发执行的小的工作单元;遍历集合中的对象;作为另外一个操作完成时的回调。
Blocks作为传统回调函数的替代品有两个原因:
。它允许在方法调用处编写在方法实现的上下文中稍后执行的代码,于是,block会是framework methods的参数。
。它能够访问本地的变量。你不用使用回调去请求某一数据结构,该数据结构包含了在某一操作中需要的上下文信息,你只需要直接访问本地变量。
- Blocks 概念预览
- blocks
- Blocks
- Blocks
- Blocks
- Blocks
- Blocks
- Blocks
- Blocks
- Windows 9, Threshold ,概念版 ,预览版
- WPF-MVVM模式学习笔记1——MVVM概念预览
- 15.2 Blocks
- Delimiting Blocks
- Code::Blocks
- Code::Blocks
- poj2363-blocks
- blocks学习
- blocks 学习
- Baranovskiy的非常著名的5个问题
- SUb Main 的用途
- 《Unix环境高级编程》:递归遍历目录层次结构,并按文件类型计数
- JQuery之Ajax
- Ubuntu的启动配置文件grub.cfg(menu.lst)设置指南
- Blocks 概念预览
- (一)win7(winxp)Eclipse安装Android ndkR7
- WAP协议研究笔记—彩信的传输
- SQL内 连接(只连接匹配的行)
- POJ 1862 Stripies (贪心)
- poj2528 (线段树+离散化)
- 直方图 density(密度)解释
- 根据rowid统计一个表占用了多少块
- Spring 依赖注入(DI)