我有一个名为.a
的旧BULib
库,其中在库目标的NEW_API
中定义了一个宏GCC_PREPROCESSOR_DEFINITIONS
。在lib中使用此宏来公开头文件中的某些方法,或者不使用条件编译。例如:
#ifdef NEW_API
+ (nullable NSString *)user;
#endif
在项目中使用此库时出现问题。当我想使用
时[BULib user];
我收到编译时错误
没有已知的选择器类方法' getUser'
如果我在项目的NEW_API
中添加GCC_PREPROCESSOR_DEFINITIONS
,那么问题就解决了,然后我可以使用该符号并按预期工作。
也许我误解了图书馆与消费者项目之间宏的使用,但我不想要这种行为。
如果使用宏集正确编译了lib,为什么我必须在使用者项目中设置宏?如果这不是实现这一目标的方式,那又是什么呢?
非常感谢你。
答案 0 :(得分:0)
有几种可能的解决方案:
NEW_API
中添加GCC_PREPROCESSOR_DEFINITIONS
#ifdef NEW_API
和#end
#define NEW_API
+ (nullable NSString *)user;
类别BULib
和其他缺失的方法
醇>
我个人更喜欢第三种选择。 它会是这样的:
#define NEW_API
#import <bulib.h>