首页 > 代码库 > 新浪微博客户端(34)-block的细节与本质
新浪微博客户端(34)-block的细节与本质
main.m
#import <Foundation/Foundation.h> void test4(); int main(int argc, const char * argv[]) { @autoreleasepool { test4(); } return 0; } // 普通的局部变量,block只会引用它初始的值(block定义那一刻),不能跟踪变量的改变 void test1() { int i = 10; void (^next)() = ^{ printf("当前i的值是:%d\n",i); // 输出为10 }; i = 20; next(); } // 被static修饰的局部变量,block内部会一直引用 void test2() { static int i = 10; /** * block 的定义语法 * void 是返回值 * (^next) 定义一个block,block的名字是next * (int) 代表该block可以接收一个参数 */ void (^next)(int) = ^(int i){ printf("当前i的值是:%d\n",i); // 输出为20 }; i = 20; next(5); } // 被__block修饰的局部变量,block内部会一直引用 void test3() { __block int i = 10; void (^next)() = ^{ printf("当前i的值是:%d\n",i); // 输出为20 }; i = 20; next(); } int j = 10; // 全局变量,block会一直引用 void test4() { void (^next)() = ^{ printf("当前i的值是:%d\n",j); // 输出为20 }; j = 20; next(); }
新浪微博客户端(34)-block的细节与本质
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。