Objective-C ++中的属性声明错误

时间:2016-06-15 17:47:12

标签: objective-c xcode properties macros objective-c++

我有" Constants.h"头文件,包含如下的宏:

#define IS_IOS_SIMULATOR TARGET_IPHONE_SIMULATOR
#define IS_IOS (TARGET_OS_IOS || IS_IOS_SIMULATOR)
#define IS_MAC (TARGET_OS_MAC)
#if IS_IOS
#define xColor UIColor
#elif IS_MAC
#define xColor NSColor
#endif

它允许我对iOS和macOS应用程序使用相同的代码。我的整个代码都是Objective-C ++,所以我把类型转换放在任何地方。当涉及到这样的属性声明时,问题通常出现在头文件中:

@property (strong, nonatomic) xColor *colorProp;

XCode不断抛出以下异常:

  

未知的类型名称' xColor',您的意思是......?

即使" Constants.h"导入文件并连接所需的库。 有没有办法禁用这些异常,最后编译我的代码?

1 个答案:

答案 0 :(得分:0)

使用Macro检测当前正在运行的设备时,请确保按以下方式定义它们:

#define IS_IOS_SIMULATOR TARGET_IPHONE_SIMULATOR
#define IS_IOS (TARGET_OS_IOS || IS_IOS_SIMULATOR)
#define IS_MAC (TARGET_OS_MAC && !IS_IOS_SIMULATOR)

感谢Phillip Mills和Amin Negm-Awad的帮助!