摘要: 在C/C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一... 阅读全文
posted @ 2015-06-26 14:32 转身看见海 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 使用 weak–strong dance 技术block 可以直接引用 self,但是要非常小心地在 block 中引用 self。因为在 block 引用 self,可能会导致循环引用。如下例所示:[objc] view plaincopy@interfaceKSViewController(){... 阅读全文
posted @ 2015-06-26 10:47 转身看见海 阅读(533) 评论(0) 推荐(0) 编辑
摘要: 主要内容:一、block相关的题目二、block的定义三、block的实现四、捕获自动变量值五、block存储区域六、截获对象一、block相关的题目这是一篇比较长的博文,前部分是block的测试题目,中间是block的语法、特性,block讲解block内部实现和block存储位置,请读者耐心阅读... 阅读全文
posted @ 2015-06-26 10:45 转身看见海 阅读(266) 评论(0) 推荐(0) 编辑
摘要: Block存储区域首先,需要引入三个名词:● _NSConcretStackBlock● _NSConcretGlobalBlock● _NSConcretMallocBlock正如它们名字显示得一样,表明了block的三种存储方式:栈、全局、堆。block对象中的isa的值就是上面其中一个,下面开... 阅读全文
posted @ 2015-06-26 10:27 转身看见海 阅读(373) 评论(0) 推荐(0) 编辑
摘要: 一、捕获自动变量值首先看一个经典block面试题:[objc] view plaincopyintval=10;void(^blk)(void)=^{printf("val=%d\n",val);};val=2;blk(); 上面这段代码,输出值是:val = 10.而不是2. block 在实... 阅读全文
posted @ 2015-06-26 10:23 转身看见海 阅读(440) 评论(0) 推荐(0) 编辑
摘要: 主要内容:1. 开始使用block(Getting Started with Blocks)2. block概念综述(Conceptual Overview)3. 声明和创建block(Declaring and Creating Blocks)4. block和变量(Blocks and Vari... 阅读全文
posted @ 2015-06-26 10:19 转身看见海 阅读(737) 评论(0) 推荐(0) 编辑
摘要: 本文的主要内容:ARC的本质ARC的开启与关闭ARC的修饰符ARC与BlockARC与Toll-Free BridgingARC的本质ARC是编译器(时)特性,而不是运行时特性,更不是垃圾回收器(GC)。Automatic Reference Counting (ARC) is a compiler... 阅读全文
posted @ 2015-06-26 10:04 转身看见海 阅读(183) 评论(0) 推荐(0) 编辑