Objective-C(13)代码块---block
block类型
block是一种数据类型,在iOS开发中广泛使用且被苹果公司极力推荐使用,其功能很像C语言中的函数指针。
^ 是block的特有标志。
block的实现代码包含在{ }中。
大多数情况下,以内联的形式被定义及使用。
void(^demoBlock)()=^{NSLog(@"demoBlock");}int(^sumBlock)(int,int)=^(intx,inty){returnx+y;}
block的使用和函数指针的使用类似
int(^sumblock)(int,int)=^(inta,intb){returna>b?a:b;}intc=sumblock(10,20);NSLog(@"c=%d",c);
block内部可以访问外部的变量
外部的局部变量,block内部不能修改,全局变量可以。
如果局部变量使用__block声明,则可以在内部修改。
inta=10;__blockintb=20;void(^myblock)();myblock=^{NSLog(@"a=%d",a);b=20;}myblock();
实际上,定义block时会对局部变量进行拷贝(副本)
block的重要意义:在处理异步任务时非常方便,这也是block应用的难点
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。