我的项目结构
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
库的一部分,因此,建议也应考虑此库。
任何帮助或指示将不胜感激。
答案 0 :(得分:1)
如果在某些类中需要Boost工具,可以使用Objective-C ++隐藏它。帮手链接: http://philjordan.eu/article/strategies-for-using-c++-in-objective-c-projects
答案 1 :(得分:1)
您可以使用预处理器使用this answer
中的技术更改头文件#if __has_feature(objc_arc)
//ARC-specific things
#else
//Non-ARC specific things
#endif