Objective-C(13)代码块---block
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Objective-C(13)代码块---block相关的知识,希望对你有一定的参考价值。
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应用的难点
本文出自 “teacherAn” 博客,请务必保留此出处http://annmeng.blog.51cto.com/3321237/1745694
以上是关于Objective-C(13)代码块---block的主要内容,如果未能解决你的问题,请参考以下文章
Objective-C语法之代码块(block)的使用 (转载)