在启用弧的应用中重构#ifndef __OBJC_GC_

时间:2012-01-17 17:11:07

标签: iphone ios5 automatic-ref-counting

我正在ARC环境中编写应用程序,我正在尝试使用在ARC之前编写的第三方库。我在所有相关文件上使用-fno-objc-arc标志,因此它正在编译,但是项目使用#ifndef __OBJC_GC_块来释放内存,这会导致内存分配错误。我正在尝试确定正确的解决方案,到目前为止,我有以下内容:

1。)找到一个不同的图书馆或写我自己的图书馆 - 这是它唯一的免费图书馆,所以这显然不是很理想,而且我已经足够新,以至于我觉得不能轻易解决这个问题

2。)删除#ifndef块并交叉我的手指 - 今天无法在项目上工作,但这是我的下一个计划

3。)将代码重构为符合ARC并删除-fno-objc-arc标志

#2可能有效吗? #3会有多难,它会不会真正导致编译器定义__OBJC_GC_? (我计划使用大约4-5个课程,但它们相当大)

2 个答案:

答案 0 :(得分:1)

您说分配块已包含在#ifndef __OBJC_GC_中。 注意它是#ifndef - “如果没有定义”。

因此,如果作者正确维护非GC版本,它应该可以开箱即用。 您无需删除ifdef或伪造它们。

即使使用ARC,编译器也不应为iOS定义此标志。 只要确保库本身没有明确设置此标志..

答案 1 :(得分:0)

我建议考虑另一种选择:为项目关闭ARC。