仅在 iOS 上声明 属性

Declare property only on iOS

我正在为 iOS、OSX 和 tvOS 制作 SpriteKit 游戏。我正在尝试将加速度计用于我的 iOS 目标。我在导入 CMMotionManager 时检查了 iOS,但是在创建我的运动管理器 属性.

时我似乎无法进行检查
#if os(iOS)
    import CMMotionManager
#endif

class MainPlayScene: TCScene, SKPhysicsContactDelegate {

    //MARK: Properties
    //Motion
    @available(iOS 9, *) // Does not work, just trying things out....
    var motionManager:CMMotionManager {
        return motionManager
    }

我该如何进行这项检查?

编辑:来晚了,我越想越多,如果我走错了路,请纠正我。如何仅将加速度计用于 iOS 并仍然共享我的场景代码?

您可以使用

#if TARGET_OS_IPHONE
    import CMMotionManager

您使用与导入语句相同的语法。这也是苹果在他们的示例游戏 DemoBots 中所做的。

#if os(iOS)
var motionManager....
#endif

#if os(tvOS)
...
#endif

您也可以进行多次检查并使用 else/else if

 #if os(iOS) || os(tvOS)
 .... 
 #elseif os(OSX)
 ... 
 #endif
 ... // Code for other platforms
 #endif

How to determine device type from Swift? (OS X or iOS)

只是好奇,您对 motionManager 属性 进行计算有什么特别的原因吗?