您的位置:首页 > 移动开发 > Objective-C

Objective-C--block的概念和基本使用

2015-10-15 09:16 741 查看

一、block的概念

Block对象是一个C级别的语法和运行机制。它与标准的C函数类似,不同之处在于,它除了有可执行代码以外,它还包含了与堆、栈内存绑定的变量。因此,Block对象包含着一组状态数据,这些数据在程序执行时用于对行为产生影响。

可以用Block来写一些可以传到API中的函数语句,可选择性地存储,并可以使用多线程。作为一个回调,Block特别的有用,因为block既包含了回调期间的代码,又包含了执行期间需要的数据,由于Objective-C 和 C++ 都是衍生自 C,block被设计为可同时兼容这三种语言。

二、block的基本使用

1、无参无返回值

定义一个无参无返回值的block变量并且赋值

void (^block变量名)() = ^(){
//代码块语句
};

//优化:
void (^block变量名)() = ^{

};


void(^myBlock1)() = ^() {
//代码块语句
NSLog(@"黑马程序员");

};


void(^myBlock2)() = ^ {
//代码块语句
NSLog(@"Hello , World");
};


block变量的使用

block变量名();


//使用block变量
myBlock1();
myBlock2();


打印结果:

2015-10-15 08:40:31.006 block的使用[990:57199]黑马程序员

2015-10-15 08:40:31.007 block的使用[1015:58597] Hello , World

2、有参无返回值

定义一个有参无返回值的block变量并且赋值

void (^变量名)(参数类型及个数) = ^(形参列表){
//代码块语句
};


void(^myBlock3)(int,int) = ^(int a,int b) {
NSLog(@"a + b = %d",a+b);
};


使用有参无返回值的block,并传两个参数

myBlock3(88,99);


打印结果:

2015-10-14 08:58:24.512 block的使用[1052:62561] a + b = 187

重新定义myBlock3

//先定义变量再赋值
myBlock3 = ^(int x,int y){
int max = x>y ? x:y;
NSLog(@"max = %d",max);
};
myBlock3(55,66);


打印结果:

2015-10-14 08:59:35.332 block的使用[1065:63925] max = 66

3、有参有返回值

定义一个有参无返回值的block变量并且赋值
void (^变量名)(参数类型及个数) = ^(形参列表){

//代码块语句:return语句;

};


//定义一个有参有返回值的block变量并且赋值

int(^myBlock4)(int ,int ) = ^(int c,int d) {
//代码块语句:return 语句;
return c+d;
};

//定义变量接受返回值
int add = myBlock4(12,23);
//打印
NSLog(@"add = %d",add);


打印结果:

2015-10-15 09:12:53.181 block的使用[1116:68164] add = 35
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: