我正在ARC环境中编写一个应用程序,并尝试使用在ARC之前编写的第三方库。我在所有相关文件上使用了-fno-objc-arc标志,所以它正在编译,但项目使用#ifndef __OBJC_GC_块来释放内存,这会导致内存分配错误。我正在尝试确定正确的解决方案,到目前为止,我有以下几点:
1.)找一个不同的库或者自己编写--这是唯一的免费库,所以这显然不是很理想,而且我还很新,所以我不太习惯使用它
2.)删除#ifndef代码块并为我祈祷--今天我不能在这个项目上工作,但这是我的下一个计划
3.)重构代码使其符合ARC,并删除-fno-objc-arc标志
2号可能行得通吗?#3会有多难,它会导致编译器定义__OBJC_GC_吗?(我计划使用大约4-5个类,但它们的规模相当大)
发布于 2012-01-18 03:06:02
您说分配块被封装到#ifndef __OBJC_GC_
中。请注意,它是#ifndef
-“如果未定义”。
因此,如果作者正确地维护了非GC版本,它应该可以开箱即用。你不需要移除ifdefs或者伪造它们。
即使在ARC打开的情况下,编译器也不应为iOS定义此标志。只需确保库本身不显式设置此标志即可。
发布于 2012-01-18 02:52:14
我建议考虑另一种选择:关闭项目的ARC。
https://stackoverflow.com/questions/8898779
复制相似问题