中国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 · 842 阅读 · 0 评论 -
block介绍(三)揭开神秘面纱(上)
上一篇我们总结了各个情况下,block及其引用到的内存位置情况。 接下来几篇,我们将剖析编译器转码以及运行时库源码来一探block的究竟。 block到底是什么 我们使用clang的rewrite-objc命令来获取转码后的代码。 1、block的底层实现 我们来看看最简单的一个block: 图一 这个block仅仅打印栈变量i和j的值,其被clang转原创 2014-04-15 09:01:07 · 921 阅读 · 0 评论 -
block介绍(四)揭开神秘面纱(下)
终于有空开始这系列最后一篇的编写。 这一篇,我们将看到block的内存管理的内部实现,通过剖析runtime库源码,我们可以更深刻的理解block的内存运作体系。 看此篇时,请大家同时打开两个网址(或者下载它们到本地然后打开): http://llvm.org/svn/llvm-project/compiler-rt/trunk/BlocksRuntime/runtime.c http原创 2014-04-15 09:01:49 · 757 阅读 · 0 评论 -
Block介绍(二)内存管理与其他特性
我们在前一章介绍了block的用法,而正确使用block必须要求正确理解block的内存管理问题。 这一章,我们只陈述结果而不追寻原因,我们将在下一章深入其原因。 一、block放在哪里 我们针对不同情况来讨论block的存放位置: 1.栈和堆 以下情况中的block位于堆中: 1 2 3 4 5 6 7 8 9 10 11 12 1原创 2014-04-15 09:00:24 · 888 阅读 · 0 评论
分享