重构#ifndef

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

1.)找到一个不同的图书馆或写我自己的 - 这是它唯一的免费图书馆,所以这显然不是理想的,我是新的,我不觉得舒服处理

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

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

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


你说分配块被包含在#ifndef __OBJC_GC_ 。 请注意它是#ifndef - “如果未定义”。

因此,如果作者正确维护非GC版本,它应该是开箱即用的。 你不需要删除ifdefs或伪造它们。

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


我建议考虑另一个选项:关闭项目的ARC。

链接地址: http://www.djcxy.com/p/72759.html

上一篇: refactoring #ifndef

下一篇: Autorelease pool debugging