黑马程序员技术交流社区
标题:
block问题
[打印本页]
作者:
李烨
时间:
2014-4-18 09:05
标题:
block问题
本帖最后由 李烨 于 2014-4-19 10:18 编辑
void ^(myblock)(id, NSUInteger, BOOL *) = ^(id obj, NSUInteger index, BOOL *stop)
{
}
复制代码
这个函数中的 ^ 是名称还是有别的含义? = 后面又是什么意思? 求解读
作者:
微尘•逐梦
时间:
2014-4-18 09:42
这个^就是block的标志,与指向函数的指针中的*用法一样,等号后面的^就是把后面的代码用block包装起来的意思。
作者:
D调的沉默
时间:
2014-4-18 10:12
本帖最后由 D调的沉默 于 2014-4-18 10:15 编辑
我给你拿一段简单的,让你理解下吧
Blocks的定义:
int (^MySum)(int, int) = ^(int a, int b) {
return a+b;
};
^是block的标识符,这段代码定义了一个叫MySum的blocks对象,它带有两个int参数,返回int。等式右边就是blocks的具体实现。
它的用法和指向函数的指针一样,而且比较类似。
定义函数指针
int (*myFn)();
定义Blocks
int (^MyBlocks)(int,int);
解释的很详细,应该明白了吧。。接着给你补充一下你这个应该是遍历NSarry对象数组用的,每次NSarry都会向block中传入一个对象,,id obj是接受这个对象的,index是判断传入第几个对象的,而bool *stop使用来控制是否停止传入的,可以通过在外部定义一个bool来控制
作者:
Er01c
时间:
2014-4-18 10:26
^ 是block代码块的标志,block代码块用来封装一段代码,返回值、形参可选
= 后面 ^(id obj, NSUInteger idx, BOOL *stop) 中的obj(对象) , idx(索引), stop(控制标识)是形参
作者:
李烨
时间:
2014-4-18 11:00
D调的沉默 发表于 2014-4-18 10:12
我给你拿一段简单的,让你理解下吧
Blocks的定义:
int (^MySum)(int, int) = ^(int a, int b) {
:handshake
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2