iOS闭包block理解
来源:互联网 发布:万影数据 编辑:程序博客网 时间:2024/05/16 10:06
这几天打算把block有关的东西梳理下,也算是自我学习下。
block定义
struct Block_descriptor {
unsigned long int reserved;
unsigned long int size;
void (*copy)(void *dst, void *src);
void (dispose)(void ); };struct Block_layout {
void *isa;
int flags;
int reserved;
void (invoke)(void , …);
struct Block_descriptor *descriptor;
/* Imported variables. */ };
实际上block就这俩东东,下面举个例子
int main(int argh,const chat * argue[]){void (^block)() = ^{ printf("Hello World");};block();return 0;}
定义完之后,其实就是创建了一个函数,在创建结构体的时候把函数的指针一起传给了block,所以之后拿出来可以调用。
再看值捕获的问题
**`int main(int arc,const chatr*argv[]){ int a=10; void(^block)()=^{printf("a=%d",a);}; block(); return 0;}`**
定义block 的时候,变量a的值就传递到了block的结构体中,仅仅是值传递,所以在block中修改a的值是不会影响到外面的a 的变量的,如果加了_blocl前缀,并不是直接传递a的值了,而是把a的地址传过去了,所以在block内部便可以修改到外面的变量了
简单来说就是匿名函数
Block 两个作用,一个在处理异步问题的时候,例如HTTP请求,有点像javascript的回调,在得到回复的时候更新主线程,而不会占用主线程,比Delegate逻辑好看多了。另一个当你要返回多个值又懒得创建一个类的时。
- iOS闭包block理解
- 对OC中的闭包(Block)理解
- IOS之block与闭包
- iOS开发 之闭包(Block)
- iOS 之 (闭包)block传值
- 初探iOS闭包实现Block
- ios block之理解
- ios开发-block理解
- iOS block 个人理解
- iOS block的理解
- IOS block 练习题 强化理解block
- iOS 对于block的理解
- iOS笔记-(Block的理解)
- iOS 对于block的理解
- 初探iOS中的Block(代码块与闭包)
- lua闭包,ios block,C++lambda函数
- IOS 闭包(block)学习笔记
- ios 中利用block(闭包)传递值
- NAT穿越方式
- 调用全站相关文章
- 堆排序
- Xcode7 管理工具 Alcatraz
- SKILLS
- iOS闭包block理解
- 淘宝界面总结
- DbGrideh研究
- HDU 3979 Monster(中等贪心)
- 通过canvas获取file照片,并旋转正确角度
- initWithCoder 内Xib中的控件为nil 详解
- xml文件和map之间的转化
- 2续
- IOS开发证书变成“此证书的签发者无效”解决方法