cocos2d CCLayer.m UIAccelerometer已被弃用警告

时间:2013-10-23 21:37:06

标签: c++ ios objective-c xcode cocos2d-iphone

我实际上并没在我的应用程序中使用加速计,但是这个警告是我在构建过程中唯一得到的警告。我想纠正它或消除它。此警告将我引导至CCLayer.m cocos2d原始文件。有关UIAccelerometer弃用的4个警告。

(LINES 91& 93是警告开始的地方)! UIAccelerometer在iOS 5.0中已弃用 - UIAccelerometer已被CoreMotion框架取代

    85:-(void) setIsAccelerometerEnabled:(BOOL)enabled
    86:{
    87: if( enabled != isAccelerometerEnabled_ ) {
    88:     isAccelerometerEnabled_ = enabled;
    89:     if( isRunning_ ) {
    90:         if( enabled )
    91:             [[UIAccelerometer sharedAccelerometer] setDelegate:self];
    92:         else
    93:             [[UIAccelerometer sharedAccelerometer] setDelegate:nil];
    94:     }
    95: }
    96:}

当我深入研究警告时,它会让我更深入地了解UIAccelerometer.h UIKit

让别人有这个问题吗?怎么处理呢?我应该忽略它吗?任何建议将不胜感激。谢谢,贾斯汀

2 个答案:

答案 0 :(得分:5)

2.1版的Cocos2d-iphone尚未更新为与iOS 7完全兼容。

就加速度计而言,您可以安全地注释掉UIAccelerometer的所有参考/使用。如果您确实需要在应用中使用加速度计,请使用CMMotionManager

或者你可以使用Kobold2D,github version包含对cocos2d-iphone的必要修复。

答案 1 :(得分:0)

我个人并不是Kobold2d如何“解决”这个问题的最大粉丝。他们用禁用警告的编译指示包装代码。就个人而言,我更愿意提出用CoreMotion类替换已弃用的代码更好。

保持单例类的可用性;使用这个答案:How do I initialize CMMotionManager globaly to be used by different classes? 然后在第32行的CCLayer.h中导入MotionManagerSingleton.h 接下来在CCLayer.m中使用对此类的新调用替换看起来像UIAccelerometer的所有内容,并且它运行良好。