`
sogotobj
  • 浏览: 619249 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

块代码编程---声明和创建块代码

 
阅读更多

声明一个块代码的引用

块代码变量用来保存到块代码的引用。使用和声明函数指针相识的语法声明块代码变量,只是把其中的*换成占位符^。块代码类型基本上都是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; };
分享到:
评论

相关推荐

    Android高级编程--源代码

    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专家力作,OakTable团队推荐)--随书源代码

    该资料是《Oracle SQL高级编程》的源代码 对应的书籍资料见: Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐) 基本信息 原书名: Pro Oracle SQL 原出版社: Apress 作者: (美)Karen Morton Kerry ...

    C编程思想--chinapub书籍--文本PDF

    本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流...

    一款非常好的WPF编程宝典2010 源代码

    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...

    OBJECTIVE-C编程之道 IOS设计模式解析电子书+源代码

    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 总结...

    《Java和Android开发实战详解》第2到5章源代码-by 南邮-陈杨

    第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 ...

    Python编程基础-数据&代码

    str = 'hello world' ...Python 中的变量不需要声明,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 变量一般由字母、数字和下划线组成;通常第一个字符是字母或下划线‘_’;区分大小写。

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

     李文娟,中国石油大学(华东)硕士,现供职于国家行政学院,工作后一直从事软件开发和软件项目管理工作,对计算机语言、计算机体系结构、操作系统都非常熟悉,尤其是精通C和C++编程技术. 目录 封面 -19 封底 -18 扉页...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    JavaScript集锦

    创建和存储 cookie - 42 - (18)JavaScript 表单验证 - 46 - 必填(或必选)项目 - 46 - E-mail 验证 - 47 - (19)JavaScript 动画 - 49 - 实例 - 49 - JavaScript 动画 - 49 - HTML 代码 - 50 - JavaScript 代码 - 50...

    spring4示例代码

    spring-1 演示了使用setter方式及构造器方式创建bean,util:list标签创建集合,p标签简化配置 和依赖注入, 以及bean的autowire和继承与依赖,以及bean的作用域。 spring-2 演示了外部配置文件的引入(connection)...

    module-3-strings-Niv2002-go:由GitHub Classroom创建的module-3-strings-Niv2002-go

    分配字符串模块3 =字符串和函数在本练习中,学生将在示例的帮助下学习C编程中的字符串并学习声明它们,对其进行初始化并将其用于各种I / O操作,并且将向学生介绍函数(用户定义函数和标准库函数) )在C编程中。...

    易语言程序免安装版下载

     支持静态链接其它编程语言(如C/C++、汇编等)编译生成的静态库(.LIB或.OBJ),但仅限于COFF格式,支持cdecl和stdcall两种函数调用约定。  使用说明如下:函数声明和调用方法与DLL命令一致;“库文件名”以.lib...

    WPF开发教程 ----WPF C# 编程 界面开发(很不错)

    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控件库之...

    《C++编程艺术》教程+代码

    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 ...

    在同步代码结束后,使用ReleaseMutex(THandle

    您查询的关键词是:delphi 同步 ...旧一篇:◆delphi多线程编程之二 ◆(乌龙哈里2008-10-12) | 新一篇:◆Delphi多线程编程之四 线程安全和VCL ◆(乌龙哈里2008-10-12)Csdn Blog version 3.1a Copyright © mygodsos

    精通Windows.API-函数、接口、编程实例.pdf

    6.5.5 声明导出函数、创建lib库,为其他模块提供导入表调用接口 190 6.5.6 通过构建导入表调用DLL导出函数 191 第7章 线程同步 192 7.1 基本原理 192 7.1.1 线程同步的过程 193 7.1.2 同步对象 193 ...

    Access+2000中文版高级编程

    Access2000中文版高级编程 目录 第一部分 编程基础 1 第1章 宏与代码 3 1.1 何时使用代码代替宏 4 1.1.1 何时用宏 4 ...1.1.2 何时用代码 4 ...1.2 宏到代码的转换 5 ...14.3.4 使用VBA创建和填充ListView控件 ...

Global site tag (gtag.js) - Google Analytics