Block 一直是 OC 的一个重点、难点、黑科技。Block 在日常项目中经常使用,他的实现方式和一般的 oc 代码不一样。同时也很容易出现使用不慎的情况。我们知道 OC 的本质是 C+runtime。runtime 中的具体实现完全就是汇编加上 C 语言。而且我们发现大部分都是通过结构体实现的。我们可以通过 clang -rewrite-objc main.m 这种命令吧 main.m 函数反编译 (注意:这里所说的反编译并不是真正的反编译,只是把 OC 源码转换为对等的 C++ 源码) 为为 C++ 的具体实现。下面我就会通过这个命令来分析一下转换以后的源码。下面所有列子中转换前的代码都在 main.m 中,替换后的代码都在 mainX.cpp 中.