如何处理头文件中的非ARC代码?

时间:2014-04-15 10:09:15

标签: c++ ios objective-c boost automatic-ref-counting

我的项目结构

MainProject (ARC)
    SubProject(Non-ARC)
        Boost library(i.e. Popular C++ library here is a link http://www.boost.org/) 

问题:
    Boost库的头文件(intrusive_ptr.h)之一具有带“retain”语句的内联函数(该文件由某人编辑,并且在“SubProject(非ARC)”中工作正常)。该头文件是公共的,子目录的许多文件都在“MainProject”中导入,并且这些文件具有该头文件的引用。因此,间接该文件来自MainProject,它是基于ARC的。这就是编译器拒绝编译的原因。

我所知道或尝试的内容:
我知道如何设置非ARC标志但我们只能设置.m文件(仅可编译文件)而不是.h文件。如果有人可以帮助我或建议我任何开箱即用的解决方案。

对于有兴趣看到"intrusive_ptr.h"可以在此处找到intrusive_ptr.h的人。此文件是boost库的一部分,因此,建议也应考虑此库。

任何帮助或指示将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果在某些类中需要Boost工具,可以使用Objective-C ++隐藏它。帮手链接: http://philjordan.eu/article/strategies-for-using-c++-in-objective-c-projects

http://support.apple.com/kb/TA45902?viewlocale=en_US

答案 1 :(得分:1)

您可以使用预处理器使用this answer

中的技术更改头文件
#if __has_feature(objc_arc)
//ARC-specific things
#else
//Non-ARC specific things
#endif