Objective-c的block(块)
来源:互联网 发布:手机维修软件 编辑:程序博客网 时间:2024/06/05 11:33
block的定义语法类似C中的函数指针,在别的文章里看到一张图很形象:
与定义函数指针相比只是把*换成了^而已。
个人理解,block其实就是一种函数形式,只是在OC中给赋予了一些别的意义。其实block也通常作为回调的。
block相对于OC中的方法,不同的是,它可以定义在方法体里。它被定义后可以做为参数,或者像变量一样赋值。也可以直接运行比如:
blockname();
还有就是block对于外部的变量是可以截获的,但是外部的变量在block里都相当于是const的。因为block只会保存执行block语法瞬间的值
int anInteger = 42; void (^testBlock)(void) = ^{ NSLog(@"Integer is: %i", anInteger); }; anInteger = 84; testBlock();}
输出是42。
其实block的截获变量的原理很简单,其实就是执行block语法时,把block语法表达式所使用的变量值保存到block结构体中(block的底层实现其实是c语言的结构体)。
如果想定义block能够改变的变量,必须在定义前面加__block关键字
__block int anInteger = 42; void (^testBlock)(void) = ^{ NSLog(@"Integer is: %i", anInteger); }; anInteger = 84; testBlock();
这样输出的就是84
block可以像变量一样,给定义好的block赋值,作为函数参数,甚至作为函数返回值。
0 0
- Objective-c的block(块)
- Objective-C block (块)
- Objective-C代码块(block)的练习
- Objective-C block(代码块)
- Objective-C - 代码块block
- 【Objective-C】代码块(Block)
- Objective-C语法之代码块(block)的使用
- Objective-C语法之代码块(block)的使用
- Objective-C语法之代码块(block)的使用
- Objective-C语法之代码块(block)的使用
- Objective-C代码中,块(block)的使用
- Objective-C语法之代码块(block)的使用
- Objective-C语法之代码块(block)的使用
- Objective-C语法之代码块(block)的使用
- Objective-C语法之代码块(block)的使用
- Objective-C语法之代码块(block)的使用
- Objective-C语法之代码块(block)的使用
- Objective-C语法之代码块(block)的使用
- 【C++常识】C++的iostream标准库介绍 (转)
- GreenPlum环境搭建
- 未处理 System.InvalidCastExceptionMessage="无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 CO
- 新手适用Android开发的10大技巧
- 航空母舰为什么会取代战列舰
- Objective-c的block(块)
- sql中处理下划线、百分号等转义字符
- 反汇编奇怪代码,利用指令地址定位全局变量
- 如何在Tableau Desktop中创建自定义调色板 - 优阅达
- IntelliJ IDEA 11.1.3创建Maven Web项目
- .net多层架构
- 协议森林06 瑞士军刀 (ICMP协议)
- MT7620原生SDK支持HUAWEI 4G dongle
- jquery生成地图的插件JVectorMap初体验