Block
来源:互联网 发布:java调用接口传递参数 编辑:程序博客网 时间:2024/05/21 22:54
一:程序的内存区域
1,一个程序运行的时候,他所有的东西都是放在内存里的。
先加载的是代码区*****常量区******全局区/静态区:初始化的全局变量静态变量******没有初始化的全局变量静态变量********堆区(地址由小到大)栈区(地址由大到小,先进后出,出了作用域就被销毁)
2,
(1,在iOS中,堆区的内存是所有应用程序共享的。
(2,堆区的内存分配是由系统来负责的
(3,系统使用一个链表来维护所有已经分配过的内存空间。
(4,系统只是记录分配了多少字节给应用程序,并不管理具体的类型。
(5,当一个变量的引用计数为0,说明没有任何变量使用该空间,系统就会回收该内存。
(6,如果变量使用完之后不及时释放内存,那么该内存区域会被永远占用,造成内存泄露。
(7,野指针:当对象已经被释放,但是变量的指针仍指向该内存地址,此时再向该变量发送消息,就会报告野指针错误。
二:Block
1,基本概念:是一个数据类型,是一个代码单元,可以当做参数传递,可以当做返回值。
定义时,把block当成数据类型;
执行时,把block当成函数;
默认,不允许block内部修改外部数值。除非,外部变量类型前加 __block 修饰符号,再经block内部修改后,其指针地址也变为指向堆区。
2,Block常见面试题
答:10
思考:在定义block时,如果引用了外部变量,会对外部变量进行copy,记录下定义block时外部变量的值(把栈区地址copy到堆区)。即使后续外部变量变化,不会对block产生影响。
三:Block反向传值
经常能跟代理互相替换
四:自动布局初步
什么是自动布局:简单讲,就是参照两个字
0 0
- Block
- block
- Block
- block
- block
- block
- block
- block
- block
- Block
- block
- Block
- Block
- Block
- Block
- block
- Block
- block
- GCD
- springside4.2.3GA 从头配置,直到在eclipse中正常运行全流程
- UVa #10118 Free Candies (习题9-2)
- 第二章 Big O notation 试题以及讲解 (包会)
- 2014年山东省第五届ACM大学生程序设计竞赛解题报告
- Block
- PAT A1019. General Palindromic Number
- 最新HTML BroadcastChannel API引荐
- .Net单元测试(四)——Mock对象
- linux下生成core dump文件方法及设置
- HTTP请求头与响应头
- SQL 2008 高效分页
- 发令枪一响,你是没时间看你的对手是怎么跑的。只有明天是我们的竞争对手。
- NSThread