ios--iphone开发 Block
我不是黄飞鸿
计算机
展开
-
IOS Block代码块的简单使用
一 代码块的语法 代码块的书写和C语言函数的语法格式有点像,例如下面求和函数分别用C 语言和代码块来实现: int add(int a,int b) { return a+b; } int (^add)(int a,int b) = ^(int a,int b) { return a +b转载 2013-10-16 09:07:46 · 850 阅读 · 0 评论 -
Block介绍(一)基础
一、概述 Block是C级别的语法和运行时特性。Block比较类似C函数,但是Block比之C函数,其灵活性体现在栈内存、堆内存的引用,我们甚至可以将一个Block作为参数传给其他的函数或者Block。 二、热身 先看一个比较简单的Block例子: [objc] view plaincopy int multiplier = 7; int (^my转载 2013-10-16 21:02:02 · 924 阅读 · 0 评论 -
Block介绍(二)内存管理与其他特性
[+] 一、block放在哪里 我们针对不同情况来讨论block的存放位置: 1.栈和堆 以下情况中的block位于堆中: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 void foo() { __blockint i = 1转载 2013-10-16 21:10:18 · 788 阅读 · 0 评论 -
block介绍(四)揭开神秘面纱(下)
目录(?) [+] 内存管理的真面目 objc层面如何区分不同内存区的block Block_private.h中有这样一组值: /* the raw data space for runtime classes for blocks */ /* class+meta used for stack, malloc, and collectable转载 2013-10-16 21:19:23 · 806 阅读 · 0 评论 -
block介绍(三)揭开神秘面纱(上)
lock到底是什么 我们使用clang的rewrite-objc命令来获取转码后的代码。 1、block的底层实现 我们来看看最简单的一个block: 图一 这个block仅仅打印栈变量i和j的值,其被clang转码为: 图二 首先是一个结构体__main_block_impl_0(从图二中的最后一行可以看到,block是一个指向__mai转载 2013-10-16 21:17:47 · 815 阅读 · 0 评论