4

私のアプリを古いバージョンのiPhoneOSと互換性のあるものにしたいと思っています。オプションとして弱いリンクが言及されているのを見ました。OSバージョン検出コードを使用して、OSが処理できないコードブロックを回避できますか?(iADと言いますか?)

if(OS >= 4.0){
//set up iADs using "NDA code"...
} 

はいの場合、代わりに何が行われif(OS >= 4.0)ますか?

4

1 に答える 1

15

新しいフレームワークに対して弱いリンクを設定する必要があります。NSClassFromStringそれに加えて、respondsToSelectorinstancesRespondToSelectorなどのメソッドを使用して、新しい API の可用性を確認する必要があります。

例えば。MessageUI.framework に対する弱いリンク (古い例ですが、まだ関連性があります)

最初にMFMailComposerControllerクラスが存在するかどうかを確認します。

Class mailComposerClass = NSClassFromString(@"MFMailComposerController");
if (mailComposerClass != nil)
{
    // class exists, you can use it
}
else
{
    // class doesn't exist, work around for older OS
}

新しい定数、型、または関数を使用する必要がある場合は、次のようにすることができます。

if (&UIApplicationWillEnterBackgroundNotification != nil)
{
    // go ahead and use it
}

既存のクラスで新しいメソッドを使用できるかどうかを知る必要がある場合は、次のことができます。

if ([existingInstance respondsToSelector:@selector(someSelector)])
{
    // method exists
}

等々。お役に立てれば。

于 2010-06-16T18:33:26.853 に答える