(译)IOS block编程指南 1 介绍
Introduction(介绍)
Block objects are a C-level syntactic and runtime feature. They are similar to standard C functions, but in addition to executable code they may also contain variable bindings to automatic (stack) or managed (heap) memory. A block can therefore maintain a set of state (data) that it can use to impact behavior when executed.
block 对象是一个C语言级别的语法和运行时特征。他们和标准的C函数类似,但是除了包含可执行代码,他们也可以包含stack(栈,系统自动管理内存)或者heap(堆,手动管理内存)中的内存的变量。一个block可以保存一关于状态(数据的)的设置,所以当执行的时候block可以使用这些设置来影响行为。
You can use blocks to compose function expressions that can be passed to API, optionally stored, and used by multiple threads. Blocks are particularly useful as a callback because the block carries both the code to be executed on callback and the data needed during that execution.
你可以使用block来组合函数表达式来传递给API,随意存储,并被多个线程使用。block 经常被用作回调函数,因为block同时具有执行回调的代码和相应需要的数据。
Blocks are available in GCC and Clang as shipped with the OS X v10.6 Xcode developer tools. You can use blocks with OS X v10.6 and later, and iOS 4.0 and later. The blocks runtime is open source and can be found in LLVM’s compiler-rt subproject repository. Blocks have also been presented to the C standards working group as N1370: Apple’s Extensions to C. As Objective-C and C++ are both derived from C, blocks are designed to work with all three languages (as well as Objective-C++). The syntax reflects this goal.
block在OS X 10.6 中的Xcode 开发者工具中的gcc 和clang是允许的。你可以在OS X v10.6 和 IOS 4.0 及以后版本中使用block。block运行时是开源的 你可以在LLVM’s compiler-rt subproject repository中找到 。block也在标准C工作中有展示见:N1370: Apple’s Extensions to C。因为objective-C和C++都是来源于C,block被设计成可以在这三种语言中运行(也可以在Objective-C++)。block的语法实现了这个目标。
You should read this document to learn what block objects are and how you can use them from C, C++, or Objective-C.
你应该读这篇文档学习block对象是什么,和你如何在C,C++,objective-c中使用block。
Organization of This Document (block文档的组织)
This document contains the following chapters:
Getting Started with Blocks provides a quick, practical, introduction to blocks.
Conceptual Overview provides a conceptual introduction to blocks.
Declaring and Creating Blocks shows you how to declare block variables and how to implement blocks.
Blocks and Variables describes the interaction between blocks and variables, and defines the
__blockstorage type modifier.Using Blocks illustrates various usage patterns.
- Getting Started with Blocks 提供里一个快速实用的block介绍
- Conceptual Overview 提供了一个概念性的block的介绍
- Declaring and Creating Blocks 告诉你如何定义和实现block
- Blocks and Variables 介绍了块和变量之间的内在关系,和定义_block 存储类型的修改
- Using Blocks 介绍了块的不同的使用模式
Block相关文章
1: IOS block编程指南 1 介绍
block编程简介
2: IOS block编程指南 2 block开始
提供里一个快速实用的block介绍
3:IOS block编程指南 3 概念总览
提供了一个概念性的block的介绍
4:IOS block编程指南 4 声明和创建blocks
告诉你如何定义和实现block
5:IOS block编程指南 5 Block和变量
介绍了块和变量之间的内在关系,和定义_block 存储类型的修改6:IOS block编程指南 6 Block的使用
Block使用相关
(译)IOS block编程指南 1 介绍的更多相关文章
- (译)IOS block编程指南 2 block开始
Getting Started with Blocks(开始block) The following sections help you to get started with blocks usin ...
- (译文)IOS block编程指南 4 声明和创建blocks
Declaring and Creating Blocks (声明和创建blocks) Declaring a Block Reference (声明一个block引用) Block variable ...
- (译文)IOS block编程指南 3 概念总览
Conceptual Overview(概览) Block objects provide a way for you to create an ad hoc function body as an ...
- iOS多线程编程指南
iOS多线程编程指南(拓展篇)(1) 一.Cocoa 在Cocoa上面使用多线程的指南包括以下这些: (1)不可改变的对象一般是线程安全的.一旦你创建了它们,你可以把这些对象在线程间安全的传递.另一方 ...
- iOS多线程编程指南(一)关于多线程编程(转)
原文:http://www.dreamingwish.com/article/ios-multi-threaded-programming-a-multi-threaded-programming.h ...
- iOS多线程编程指南(二)线程管理
当应用程序生成一个新的线程的时候,该线程变成应用程序进程空间内的一个实体.每个线程都拥有它自己的执行堆栈,由内核调度独立的运行时间片.一个线程可以和其他线程或其他进程通信,执行I/O操作,甚至执行任何 ...
- iOS ---Extension编程指南
当iOS 8.0和OS X v10.10发布后,一个全新的概念出现在我们眼前,那就是应用扩展.顾名思义,应用扩展允许开发者扩展应用的自定义功能和内容,能够让用户在使用其他app时使用该项功能.你可以开 ...
- <译>Spark Sreaming 编程指南
Spark Streaming 编程指南 Overview A Quick Example Basic Concepts Linking Initializing StreamingContext D ...
- iOS 并发编程指南
iOS Concurrency Programming Guide iOS 和 Mac OS 传统的并发编程模型是线程,不过线程模型伸缩性不强,而且编写正确的线程代码也不容易.Mac OS 和 iOS ...
随机推荐
- 纯CSS画WP8界面
我的手机是诺基亚920,13年4月份买的.工作之余,就想用css做一下WP8的界面效果,如上图所示.不做不知道,一做还挺难的.尤其是画那个QQ 的企鹅图标,太难画了.怎么画都不像. <!doct ...
- Prime Cryptarithm
链接 分析:对于三位数我们限定为[100,999],两位数我们限定为[10,99],然后我们依次判断是否满足乘法式且各个数位是否在数列中,若都满足+1 /* PROB:crypt1 ID:wangha ...
- Github--开源代码仓库式系统(转)
要了解Github,我们首先要知道Git,Git是管理代码的工具,写代码不是件轻松的事儿,一个人写的时候已经不轻松了,一群人写就更不轻松了,但这世界上很多事都是怎么不轻松怎么来的,大部分人都会和别人一 ...
- 替换一个文件中的内容BAT
@echo off setlocal enabledelayedexpansion set file=%1set "file=%file:"=%" for %%i in ...
- Laravel实践-自定义全局异常处理
在做API时,需要对一些异常进行全局处理 百牛信息技术bainiu.ltd整理发布于博客园比如添加用户执行失败时,需要返回错误信息 // 添加用户 $result = User::add($user) ...
- Android 应用程序窗体显示状态操作(requestWindowFeature()的应用)(转载)
转自:http://www.cnblogs.com/salam/archive/2010/11/30/1892143.html 我们在开发程序是经常会需要软件全屏显示.自定义标题(使用按钮等控件)和其 ...
- (水题)Codeforces - 327C - Magic Five
https://codeforces.com/problemset/problem/327/C 因为答案可以有前导零,所以0和5一视同仁.每个小节内,以排在第 $i$ 个的5为结尾的序列即为在前面 $ ...
- HDU 5101
hdoj5101 lower_bound函数: 题意: 从两个不同集合拿出两个数,加的和大于k的可行的方案数 思路: 答案=从所有数中选择的两个加和大于k的数的方案数-在同一个集合中选择的两个加和大于 ...
- rabbitMQ的使用
介绍 一款消息队列数据库,类似redis发布订阅,但是rq 做了功能完善和数据持久化.在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应 ...
- HDU 6183 Color it(动态开点线段树)
题目原网址:http://acm.hdu.edu.cn/showproblem.php?pid=6183 题目中文翻译: Time Limit: 20000/10000 MS (Java/Others ...