2012-01-18 65 views
0

我知道UIAccelerometerDelegate现在已被弃用,因为ios5。提交新应用程序时,我仍然可以使用UIAccelerometerDelegate吗?

我仍然需要提交应用程序,以便使用ios3.2(iPad的第一个版本)的用户仍然可以使用它。该应用程序仅适用于iPad,但我注意到核心运动库适用于ios4及更高版本......这是否意味着我无法使用已弃用的UIAccelerometerDelegate进行提交? UIAccelerometerDelegate会在更新的iOS中停止工作吗?

我可以同时使用两个,所以拥有ios3.2的人仍然可以加速,我将如何实现这一点?

感谢任何能帮助我的人!

回答

0

它可能会在某个时候停止工作,但Apple不会仅仅因为使用已弃用的API而拒绝应用程序。

您可以选择在运行时使用哪个API,虽然它比平时更复杂一点,因为CoreMotion依赖于iOS 4的新增块。由于块是对象文字(即,它们的创建自然会作为程序流而不是显式地在你的命令中),你需要表明你不介意链接器中是否存在它们,你可以在命令行中添加-weak-lSystem

下面,你可以用一个标准的运行时开关,如:

if(NSClassFromString(@"CMMotionManager")) 
{ 
    // this device has an implementation of CMMotionManager, 
    // so proceed with CoreMotion 
} 
else 
{ 
    // this device doesn't have an implementation of 
    // CMMotionManager, so proceed with UIAccelerometerDelegate 
} 

NSClassFromString要求运行时返回Class为命名的类。如果命名的类在运行时中不存在,它将返回该值或nil。因此可以用它来查看是否实现了特定的类,这是一个比依靠编写有关库版本号的外部知识等更好的解决方案。

相关问题