OC block变量的理解
来源:互联网 发布:厄米特矩阵的性质 编辑:程序博客网 时间:2024/04/30 08:09
blcok封闭了一段代码, 可以在任何时候执行
block可以作为函数的参数,或函数的返回值, 而其本身又可以带参数和返回值
苹果官方建议多用block, 在多线程,异步任务,集合遍历,集合排序,动画转场用得很多
在这个代码中block的作用仅仅返回数值1, 断点, 反汇编代码, 查看
block变量就是一个含有函数指针类型变量的一个结构体, 前8字节是一个isa指针. 这个结构体是不透明的,所以其它变量的用途也不太清楚, 但很明显, 结构体中, 第4个成员变量
是根据我们block变量声明所生成的一个返回值为int无参的函数指针. 这个指针中存放的数值为函数的首地址 0x100000f30
再声明并定义一个有两个参数和一个返回值的块, 断点,反汇编代码,查看
同样block结构体中第4个成员变量又变成了 (int)(*)(int, int) 函数指针类型
所以我们可以简单理解, 块就是函数指针的变形使用
代码如下
//// main.m// block//// Created by LiuWei on 15/4/17.// Copyright (c) 2015年 LiuWei. All rights reserved.//#import <Foundation/Foundation.h>int main(){ // block用来保存一段代码 // block标志^ /* block保存代码 block可以有参数 block可以有返回值 */ // 有返回值, 不带参数的block int (^myblock)()= ^{ return 1; }; int k = myblock(); NSLog(@"k = %i", k); // 有返回值, 带参数的block int (^myblock2)(int a, int b) = ^(int a, int b){ return a + b; }; k = myblock2(1, 2); NSLog(@"k = %i", k); return 0;}
0 0
- OC block变量的理解
- oc中block的理解
- 堆block & block访问oc变量
- OC中对Block理解
- OC block 与协议的一些小理解
- 黑马程序员 OC中的block的基础理解
- 自己对OC中Block的理解2
- 个人对于OC中delegate、block的简单理解
- OC 重点block-------2-------block内部访问外部变量的问题
- oc block的使用
- OC -- block的用法
- OC--Block的使用
- 关于block的OC
- 对OC中的闭包(Block)理解
- OC 类中的属性与成员变量的理解
- OC -1 Block 定义 和 变量的访问权限 . Protocol定义
- OC------block块的使用
- OC中Block的使用
- (function(){})()
- spring3 ApplicationContext bean spring
- odsocket 简单使用
- js 使用正则 将字符串中的URL加上href链接 在页面点击
- 代码生成Excel导入模版
- OC block变量的理解
- Magento性能优化—开Gzip提高网页下载速度
- Python中线程和函数的区别--实例演示
- C语言输出方式
- 指针面试1
- 内核bug.h以及GCC内联汇编的学习
- 又见数塔
- NYOJ 304 节能 (区间dp)
- Java中的泛型方法