A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李烨 中级黑马   /  2014-4-18 09:05  /  1069 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李烨 于 2014-4-19 10:18 编辑
  1.     void ^(myblock)(id, NSUInteger, BOOL *) = ^(id obj, NSUInteger index, BOOL *stop)
  2. {

  3. }
复制代码

这个函数中的 ^ 是名称还是有别的含义? = 后面又是什么意思? 求解读

评分

参与人数 1黑马币 +2 收起 理由
jing迪 + 2

查看全部评分

4 个回复

倒序浏览
这个^就是block的标志,与指向函数的指针中的*用法一样,等号后面的^就是把后面的代码用block包装起来的意思。

评分

参与人数 1黑马币 +2 收起 理由
jing迪 + 2

查看全部评分

回复 使用道具 举报
本帖最后由 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来控制

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
^ 是block代码块的标志,block代码块用来封装一段代码,返回值、形参可选

= 后面 ^(id obj, NSUInteger idx, BOOL *stop) 中的obj(对象) , idx(索引), stop(控制标识)是形参
回复 使用道具 举报
D调的沉默 发表于 2014-4-18 10:12
我给你拿一段简单的,让你理解下吧
Blocks的定义:
int (^MySum)(int, int) = ^(int a, int b) {

:handshake
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马