【问题标题】:Property declaration error in Objective-C++Objective-C++ 中的属性声明错误
【发布时间】:2016-06-15 17:47:12
【问题描述】:

我有“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”文件并连接了所需的库。 有没有办法禁用这些异常并最终编译我的代码?

【问题讨论】:

  • 看起来您在某处缺少*,但我认为这不是您的根本问题
  • 哦,解决了。只是在匆忙输入一个问题。它只是一个例子。
  • 感谢您的回复!
  • 一种方法是对包含该属性的源文件使用 Product->Perform action->Preprocess。它可以让您查看常量标头的导入位置以及对声明的影响(如果有)。
  • 您确定一个或另一个定义在属性所在的标题中实际上是活动的吗?您可以使用#error 或#warning pragma 来检查

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


【解决方案1】:

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

#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 的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    相关资源
    最近更新 更多