声明一个块代码的引用
块代码变量用来保存到块代码的引用。使用和声明函数指针相识的语法声明块代码变量,只是把其中的*换成占位符^。块代码类型基本上都是C语言的格式。下面就是一些有效的块代码变量声明:
void (^blockReturningVoidWithVoidArgument)(void);
|
int (^blockReturningIntWithIntAndCharArguments)(int, char);
|
void (^arrayOfTenBlocksReturningVoidWithIntArgument[10])(int);
|
块代码同样支持可变参数列表。没有参数的块代码必须在参数列表中使用void。
块代码在传入参数,返回值等方面使用元数据验证,在设计上达到数据安全的目的。你可以把一个块代码的引用转换成一个任何类型的指针,反之亦然。但是你不能通过一个指针引用来对一个块代码引用进行解引用--因为在编译时期不能计算块代码所占大小。
你可以创建块代码的类型--只是你在多个地方创建同一种类型的块代码的最好的方式:
typedef float (^MyBlockType)(float, float);
|
|
MyBlockType myFirstBlock = // ... ;
|
MyBlockType mySecondBlock = // ... ;
|
创建块代码
使用^标示一个块代码的开始。可能后面跟着使用一对小括号括起来的参数列表。块代码的代码部分是在一对大括号里面。下面是一个块代码定义的示例,并把这个块代码赋值给一个前面声明的块代码变量--和C语言一样,块代码使用一个分号;作为定义的结束:
int (^oneFrom)(int);
|
|
oneFrom = ^(int anInt) {
|
return anInt - 1;
|
};
|
如果你在块代码定义中没有标示返回值类型,返回值类型会被通过块代码的内容推断出来,如果这个返回值是推断出来的,并且参数列表是void,你可以省略这个void。如果多个return语句出现,他们必须返回完全相同类型的值(合适的时候必须使用转换)。
全局块代码
在文件作用域内,你可以定义一个块代码具有全局可用的:
#import <stdio.h>
|
|
int GlobalInt = 0;
|
int (^getGlobalInt)(void) = ^{ return GlobalInt; };
|
分享到:
相关推荐
11.1.3 声明和实施权限 354 11.1.4 为广播Intent实施权限 355 11.2 使用AIDL来支持服务IPC 355 11.3 使用Internet服务 360 11.4 构建内容丰富的用户界面 361 11.4.1 使用动画 361 11.4.2 使用主题来为应用...
该资料是《Oracle SQL高级编程》的源代码 对应的书籍资料见: Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐) 基本信息 原书名: Pro Oracle SQL 原出版社: Apress 作者: (美)Karen Morton Kerry ...
本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流...
17.3.6 声明式地创建视图 478 17.3.7 视图导航 480 17.4 数据提供者 483 17.4.1 ObjectDataProvider 484 17.4.2 XmlDataProvider 486 17.5 结束语 488 第18章 列表、树、工具条和菜单 489 18.1 ItemsControl...
C协议实现适配器模式8.5 用Objective-C的块在iOS 4中实现适配器模式8.5.1 块引用的声明8.5.2 块的创建8.5.3 把块用作适配器8.6 总结第9章 桥接9.1 何为桥接模式9.2 何时使用桥接模式9.3 创建iOS版虚拟仿真器9.4 总结...
第1章 编程语言与Java基础知识 1 1.1 编程语言基础知识 1 1.1.1 程序、软件与应用程序 1 1.1.2 编程语言的种类 2 1.1.3 低级语言 2 1.1.4 高级语言 3 1.1.5 程序是如何执行的 3 1.2 Java基础知识 6 ...
str = 'hello world' ...Python 中的变量不需要声明,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 变量一般由字母、数字和下划线组成;通常第一个字符是字母或下划线‘_’;区分大小写。
李文娟,中国石油大学(华东)硕士,现供职于国家行政学院,工作后一直从事软件开发和软件项目管理工作,对计算机语言、计算机体系结构、操作系统都非常熟悉,尤其是精通C和C++编程技术. 目录 封面 -19 封底 -18 扉页...
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
创建和存储 cookie - 42 - (18)JavaScript 表单验证 - 46 - 必填(或必选)项目 - 46 - E-mail 验证 - 47 - (19)JavaScript 动画 - 49 - 实例 - 49 - JavaScript 动画 - 49 - HTML 代码 - 50 - JavaScript 代码 - 50...
spring-1 演示了使用setter方式及构造器方式创建bean,util:list标签创建集合,p标签简化配置 和依赖注入, 以及bean的autowire和继承与依赖,以及bean的作用域。 spring-2 演示了外部配置文件的引入(connection)...
分配字符串模块3 =字符串和函数在本练习中,学生将在示例的帮助下学习C编程中的字符串并学习声明它们,对其进行初始化并将其用于各种I / O操作,并且将向学生介绍函数(用户定义函数和标准库函数) )在C编程中。...
支持静态链接其它编程语言(如C/C++、汇编等)编译生成的静态库(.LIB或.OBJ),但仅限于COFF格式,支持cdecl和stdcall两种函数调用约定。 使用说明如下:函数声明和调用方法与DLL命令一致;“库文件名”以.lib...
2. 代码隐藏和XAML 82 3. XAML和自定义类 83 4. 标记扩展和XAML 87 5. XAML命名空间和命名空间映射 90 6. WPF名称范围 92 WPF控件开发 95 1. WPF控件开发之控件概述 95 2. 使用XAML创建按钮 103 3. WPF控件库之...
3.4.1 线程的创建和终止 56 3.4.2 Visual C++对CreateThread()和ExitThread()的替换 57 3.4.3 线程的挂起和恢复 58 3.4.4 改变线程的优先级 59 3.4.5 获取主线程的句柄 60 3.4.6 同步 60 3.5 创建线程控制面板 63 ...
您查询的关键词是:delphi 同步 ...旧一篇:◆delphi多线程编程之二 ◆(乌龙哈里2008-10-12) | 新一篇:◆Delphi多线程编程之四 线程安全和VCL ◆(乌龙哈里2008-10-12)Csdn Blog version 3.1a Copyright © mygodsos
6.5.5 声明导出函数、创建lib库,为其他模块提供导入表调用接口 190 6.5.6 通过构建导入表调用DLL导出函数 191 第7章 线程同步 192 7.1 基本原理 192 7.1.1 线程同步的过程 193 7.1.2 同步对象 193 ...
Access2000中文版高级编程 目录 第一部分 编程基础 1 第1章 宏与代码 3 1.1 何时使用代码代替宏 4 1.1.1 何时用宏 4 ...1.1.2 何时用代码 4 ...1.2 宏到代码的转换 5 ...14.3.4 使用VBA创建和填充ListView控件 ...