是否可以看到Objective-C ARC输出?

时间:2013-07-02 22:44:26

标签: objective-c automatic-ref-counting

在xcode中,可以给出一些Objective-C代码,以查看它将在Assembly中输出的代码。
是否可以查看给定的ARC启用代码,以查看ARC将输出的Objective-C?

2 个答案:

答案 0 :(得分:5)

ARC不是这样的输出Objective-C,它是编译器的一个阶段,它改变了编译器产生的汇编器/机器代码 - 正如你所提到的,你可以在Xcode中看到它。但是,如果您在二进制文件上使用反编译器,您应该会看到“MRC等效”,这与您将获得的一样好。尝试Hopper - 演示可用,我自己没有使用它,不知道生产者等。但是它产生伪代码,看起来像结构化程序集,而不是Objective-C。 HTH。

答案 1 :(得分:5)

这是不可能的,因为ARC不会产生Objective-C代码。 ARC是一种编译器功能,它以与启用优化相同的方式修改生成的程序集。你无法告诉编译器向你展示“优化”的C代码;优化不适用于C代码级别。同样,您不能要求查看“ARC-ified”Objective-C,因为ARC内存管理调用未在Objective-C代码级别应用。

如果你真的想看看内存管理调用的位置,你将不得不查看程序集。