我正在ARC环境中编写应用程序,我正在尝试使用在ARC之前编写的第三方库。我在所有相关文件上使用-fno-objc-arc标志,因此它正在编译,但是项目使用#ifndef __OBJC_GC_块来释放内存,这会导致内存分配错误。我正在尝试确定正确的解决方案,到目前为止,我有以下内容:
1。)找到一个不同的图书馆或写我自己的图书馆 - 这是它唯一的免费图书馆,所以这显然不是很理想,而且我已经足够新,以至于我觉得不能轻易解决这个问题
2。)删除#ifndef块并交叉我的手指 - 今天无法在项目上工作,但这是我的下一个计划
3。)将代码重构为符合ARC并删除-fno-objc-arc标志
#2可能有效吗? #3会有多难,它会不会真正导致编译器定义__OBJC_GC_? (我计划使用大约4-5个课程,但它们相当大)
答案 0 :(得分:1)
您说分配块已包含在#ifndef __OBJC_GC_
中。
注意它是#ifndef
- “如果没有定义”。
因此,如果作者正确维护非GC版本,它应该可以开箱即用。 您无需删除ifdef或伪造它们。
即使使用ARC,编译器也不应为iOS定义此标志。 只要确保库本身没有明确设置此标志..
答案 1 :(得分:0)
我建议考虑另一种选择:为项目关闭ARC。