Objective-C的代码块(Block)

0x01 什么是代码块

Objective-C中的代码块(Block)是iOS4.0和Mac OS X 10.6之后的系统中引进的对C语言的扩展。

它在Xcode和Clang编译器中是有效的,但它并不属于ANSI C标准。

代码块对象(通常称为代码块)除了函数中的代码,还包含变量绑定。代码块有时也称为闭包(closure)。

代码块包含两种类型的绑定:

  • 自动型:自动绑定(automatic binding)使用的是栈内存;
  • 托管型:托管绑定(managed binding)使用的是堆内存。

关于代码块的内存绑定未来会有更详细的笔记。

 

因为代码块实际上是由C语言实现的,所以它们在各种以C作为基础的语言内都是有效的,包括Objective-C、C++以及Objective-C++。

 

0x02 代码块的定义和实现

一般可以用以下关系来表示一个代码块:

<returntype>(^blockname)(list of arguments) = ^(arguments){body;};

代码块通常显得简洁明了:

  • 编译器可以通过代码块的内容推导出返回类型,所以返回类型<returntype>是可以省略的;
  • 如果代码块没有参数arguments,那也可以省略。

最简化的示例如下:

void (^theBlock)() = ^{printf(&#
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值