码迷,mamicode.com
首页 > 其他好文 > 详细

08-block

时间:2015-09-12 13:35:05      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

1. 简介

* Block封装了一段代码,可以在任何时候执行

* Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值

2. 使用

1> 定义一个无返回值且没有形参的block

void (^myBlock)() = ^(){ // 由于这里没有形参,也可以省略后面的 ()
    // ...
};

// 利用block变量调用block内部的代码
myBlock();

2> 定义一个有返回值、有形参的block

int (^sumBlock)(int, int) = ^(int a,int b) {
    return a+b;
};

// 调用该block
sumBlock(3, 5);

3. 注意

* block内部可以访问外面的变量

* 默认情况下,block内部不能修改外面的局部变量

* 给局部变量加上 __block关键字,这个局部变量就可以在block内部修改

int a = 10;
__block int b = 20;

void (^block)();

block = ^{
    a = 30; // error 可访问,当不可修改
    b = 35;
};

block();

4. 利用typedef定义block类型

typedef int (^MyBlock)(int, int);

// 以后就可以利用MyBlock这种类型来定义block变量
MyBlock block;

block = ^(int a, int b) {
    return a + b;
};

// 调用block
block(3, 5); 

08-block

标签:

原文地址:http://www.cnblogs.com/wayung7/p/4802856.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!