我在一个旧项目中,有一个代码库可以为iOS,macOS等构建不同的框架。在复制到框架产品中的一个公共头文件中,有一个这样的预处理器宏
// MyObject.h
#ifdef TARGET_IOS
@import UIKit;
#endif
如果我尝试在同一头文件中
#ifdef TARGET_IOS
@property (nonatomic, strong) UIView *containerView;
#endif
该框架构建良好。但是,当我尝试在单独的应用程序项目中测试框架时,编译器不知道类型containerView
上的类型MyObject
。
但是我当然愿意
@property (nonatomic, strong) UIView *containerView;
没有预处理器宏,在单独的应用程序中,它知道containerView
是什么类型。这是为什么?我以为您告诉编译器如何使用预处理器宏进行构建。然后,由于该框架是使用定义的属性containerView
构建的,因此可以正常工作。但是也许我误会了什么?
调试和发布配置的构建设置的预处理器宏中的TARGET_IOS = 1。