2012-01-18 60 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。因此可以用它來查看是否實現了特定的類,這是一個比依靠編寫有關庫版本號的外部知識等更好的解決方案。

相關問題