繁体   English   中英

在启用了arc的应用程序中重构#ifndef __OBJC_GC_

[英]refactoring #ifndef __OBJC_GC_ in arc enabled app

我正在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版本,它应该开箱即用。 您无需删除ifdef或伪造它们。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM