Block
听榆大叔
湖南理工学院
展开
-
Block 3:__block说明符
1 截获局部变量值 通过Block语法和Block类型变量的说明,我们已经理解了“带有局部变量值的匿名函数”中的“匿名函数”。而“带有局部变量值”究竟是什么呢?“带有局部变量值”在Blocks中表现为“截获局部变量值”。截获局部变量值的实例如下:int main(int argc, const char * argv[]){ int val = 10; const原创 2014-04-13 23:28:34 · 848 阅读 · 0 评论 -
Block 4:Block实质解析
Block是“带有局部变量值的匿名函数”,但Block究竟是什么呢? 前面所说的Block语法看上去好像很特别,但它实际上是作为极普通的C语言源代码来处理的。通过支持Block的编译器,含有Block语句的源代码转换为一般C语言编译器能够处理的源代码,并作为极为普通的C语言源代码被编译。 这不过是概念上的问题,在实际编译时无法转换成我们能够理解的源代码,但clang原创 2014-04-16 23:30:39 · 2864 阅读 · 0 评论 -
Block 5:Block解析之截获局部变量值
源代码:int main(int argc, const char * argv[]){ int dmy = 256; int val = 10; const char *fmt = "val = %d\n"; void (^blk)(void) = ^{printf(fmt, val);}; val = 2; fmt = "These va原创 2014-05-04 22:45:14 · 1202 阅读 · 0 评论 -
Block 1:什么是Blocks
Blocks是C语言的扩充功能。可以用一句话来表示Blocks的扩充功能:带有局部变量的匿名函数。 顾名思义,所谓匿名函数就是不带名称的函数。C语言的标准不允许存在这样的函数。例如以下源代码:int func(int count); 它声明了名称为func的函数。下面的源代码中为了调用该函数,必须使用该函数的名称func。int result = func(10);原创 2014-04-11 23:00:56 · 1593 阅读 · 0 评论 -
Block 2: Block语法
Block语法 下面详细讲解一下带有局部变量值的匿名函数Block的语法。前面按钮回调例子中使用的Block语法如下:^(int event) { printf(“buttonId:%d event=%d”, i, event);} 实际上,该Block语法使用了省略方式,其完整形式如下: 如上所示,完整形式的Block语法与一般的C语言原创 2014-04-12 23:49:29 · 1014 阅读 · 0 评论