首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >重构支持arc的应用程序中的#ifndef __OBJC_GC_

重构支持arc的应用程序中的#ifndef __OBJC_GC_
EN

Stack Overflow用户
提问于 2012-01-18 01:11:07
回答 2查看 219关注 0票数 2

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

1.)找一个不同的库或者自己编写--这是唯一的免费库,所以这显然不是很理想,而且我还很新,所以我不太习惯使用它

2.)删除#ifndef代码块并为我祈祷--今天我不能在这个项目上工作,但这是我的下一个计划

3.)重构代码使其符合ARC,并删除-fno-objc-arc标志

2号可能行得通吗?#3会有多难,它会导致编译器定义__OBJC_GC_吗?(我计划使用大约4-5个类,但它们的规模相当大)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-18 03:06:02

您说分配块被封装到#ifndef __OBJC_GC_中。请注意,它是#ifndef -“如果未定义”。

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

即使在ARC打开的情况下,编译器也不应为iOS定义此标志。只需确保库本身不显式设置此标志即可。

票数 1
EN

Stack Overflow用户

发布于 2012-01-18 02:52:14

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8898779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档