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

Objective-C(13)代码块---block

2016-02-28 09:26 579 查看
block类型

block是一种数据类型,在iOS开发中广泛使用且被苹果公司极力推荐使用,其功能很像C语言中的函数指针。
^ 是block的特有标志。
block的实现代码包含在{ }中。
大多数情况下,以内联的形式被定义及使用。

void (^demoBlock)() = ^ {
NSLog(@"demo Block");
}
int (^sumBlock)(int, int) = ^(int x, int y) {
return x + y;
}

block的使用和函数指针的使用类似
int (^sumblock)(int, int) = ^(int a, int b) {
return a>b?a:b;
}
int c = sumblock(10, 20);
NSLog(@"c=%d", c);


block内部可以访问外部的变量
外部的局部变量,block内部不能修改,全局变量可以。
如果局部变量使用__block声明,则可以在内部修改。
int a = 10;
__block int b = 20;
void (^myblock)();
myblock = ^ {
NSLog(@"a=%d", a);
b = 20;
}
myblock();

实际上,定义block时会对局部变量进行拷贝(副本)

block的重要意义:在处理异步任务时非常方便,这也是block应用的难点
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS Objective Xcode