Iphone 在启用arc的应用程序中重构ifndef OBJC GC

Iphone 在启用arc的应用程序中重构ifndef OBJC GC,iphone,ios5,automatic-ref-counting,Iphone,Ios5,Automatic Ref Counting,我正在ARC环境中编写一个应用程序,并尝试使用ARC之前编写的第三方库。我在所有相关文件上使用了-fno objc arc标志,因此它正在编译,但项目使用#ifndef u objc u GC_u块释放内存,这会导致内存分配错误。我正在尝试确定正确的解决方案,目前为止,我有以下几点: 1)找一个不同的图书馆或写我自己的——这是唯一一个免费的图书馆,所以这显然不理想,而且我是个新手,所以我觉得处理这个问题不太舒服 2.)移除#ifndef块并祈祷——今天我无法完成该项目,但这是我的下一个计划 3.

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

1)找一个不同的图书馆或写我自己的——这是唯一一个免费的图书馆,所以这显然不理想,而且我是个新手,所以我觉得处理这个问题不太舒服

2.)移除#ifndef块并祈祷——今天我无法完成该项目,但这是我的下一个计划

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


#2可能有效吗?#3有多难,它会导致编译器定义uu OBJC_GC_u吗?(我计划使用大约4-5个类,但它们相当大)

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

你说分配块包含在
\ifndef\uu OBJC\ugc>中。
注:它是
#ifndef
-“如果未定义”

因此,如果作者正确地维护了非GC版本,它应该是现成的。 您不需要删除ifdef或伪造它们

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

那么带ARC的iOS 5不是垃圾收集环境吗?我想是的,但是我还没有找到一个明确的答案。我做了更多的调试,看起来我正在使用的非arc代码中有一个分配错误,所以这是正确的答案。在发现库本身正在创建分配错误后(不是我的编译器设置错误的事实)我联系了一开始写这本书的人,他很好地把我和他最新的,为ARC改写的版本联系起来,这本书很有魅力。