2012-01-18 5 views
0

UIAccelerometerDelegateは現在ios5として廃止されていることを理解しています。新しいアプリを提出するときにUIAccelerometerDelegateを引き続き使用できますか?

ios3.2(iPadの最初のバージョン)を使用しているユーザーに引き続きアプリを提出する必要があります。このアプリはiPad向けのものですが、ios4以上のコアモーションライブラリがあることに気付きました...これは廃止予定のUIAccelerometerDelegateと提出できないのですか? UIAccelerometerDelegateは新しいiOSでの使用を中止しますか?

私は両方を使用できますか?ios3.2を使用している人は引き続きアクセラレーションを持つことができますが、これをどのように実装しますか?

誰にも助けてくれてありがとう!

答えて

0

Appleはある時点で機能しなくなる可能性がありますが、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を返します。したがって、特定のクラスが実装されているかどうかを確認するために使用することができ、ライブラリのバージョン番号などに関する知識以外のコーディングに頼るよりはるかに優れたソリューションです。

関連する問題