中国iOS开发 Block教程
南宫辞迁
单曲循环,其实听的是自己的心情。
展开
-
Block介绍(一)基础
一、概述Block是C级别的语法和运行时特性。Block比较类似C函数,但是Block比之C函数,其灵活性体现在栈内存、堆内存的引用,我们甚至可以将一个Block作为参数传给其他的函数或者Block。 二、热身先看一个比较简单的Block例子:int multiplier = 7;int (^myBlock)(int) = ^(int num) { return nu原创 2014-04-15 08:59:41 · 782 阅读 · 0 评论 -
block介绍(三)揭开神秘面纱(上)
上一篇我们总结了各个情况下,block及其引用到的内存位置情况。接下来几篇,我们将剖析编译器转码以及运行时库源码来一探block的究竟。 block到底是什么我们使用clang的rewrite-objc命令来获取转码后的代码。 1、block的底层实现我们来看看最简单的一个block:图一 这个block仅仅打印栈变量i和j的值,其被clang转原创 2014-04-15 09:01:07 · 811 阅读 · 0 评论 -
block介绍(四)揭开神秘面纱(下)
终于有空开始这系列最后一篇的编写。这一篇,我们将看到block的内存管理的内部实现,通过剖析runtime库源码,我们可以更深刻的理解block的内存运作体系。看此篇时,请大家同时打开两个网址(或者下载它们到本地然后打开):http://llvm.org/svn/llvm-project/compiler-rt/trunk/BlocksRuntime/runtime.chttp原创 2014-04-15 09:01:49 · 676 阅读 · 0 评论 -
Block介绍(二)内存管理与其他特性
我们在前一章介绍了block的用法,而正确使用block必须要求正确理解block的内存管理问题。这一章,我们只陈述结果而不追寻原因,我们将在下一章深入其原因。一、block放在哪里我们针对不同情况来讨论block的存放位置:1.栈和堆以下情况中的block位于堆中:1234567891011121原创 2014-04-15 09:00:24 · 808 阅读 · 0 评论