2012-03-04 19 views
2

iOS 4と5に関する質問があります。私は本当に混乱しています。iOS 4とiOS 5の下位互換性

私のアプリケーションでiOS 5 SDKを使用しています。 Appleが提供するiOS 5 Twitter統合を使用している場合、iOS 4がインストールされているiPhoneで動作しますか?

下位互換性はありますか?

私は例としてTwitterを使用しましたが、下位互換性は本当にiOS 5で動作しますか?

答えて

10

あなたが適切をあなたのアプリを設定した場合これにより、iOS 4が動作しているデバイスでクラッシュすることなく実行できます。次に、iOS 4がインストールされているiPhoneで動作します。

あなたのアプリは、アプリがiOS 5デバイスで実行されているときにTwitter APIが使用されるようなロジックを実装する必要があります。アプリがiOS 4端末で実行されている場合、ではなくを条件としてTwitter APIを使用することができます。

代わりに、別のTwitterライブラリ(MGTwitterEngineや自分のものなど)を使用することも、それらのユーザーのTwitter機能を除外することもできます。

TWRequestクラスが存在するかどうかをチェックするには、NSClassFromStringを使用します。何の下位互換性がないことを意味し

Class twRequestClass = NSClassFromString(@"TWRequest"); 
if (twRequestClass == nil) { 
    // TWRequest does not exist on this device (running iOS version < 5.0) 
    // ... do something appropriate ... 
} else { 
    TWRequest *twRequest = [[twRequestClass alloc] init]; 
    //^I didn't look up the proper initializer, so you should change that line if necessary 
    // ... 
} 
+1

非常によく説明されています。 – matt

1

いいえ、iOS5で利用可能なTwitter APIを使用しても、iOS4で実行することはできません。

なぜなら、iOS4でアプリケーションを実行すると、システムにはAPIが用意されていないからです。

ドキュメントを確認すると、このクラス/ APIが利用可能なiOSバージョンが表示されます。私はこれが役に立てば幸い enter image description here

...それはiOSの4を実行しているデバイス上で実行できるように、あなたは、適切にアプリを設定した場合

+0

。:( – shajem

+0

右...あなただけiOS5をで利用できるかiOS4をを実行しているデバイス上の高いAPIを実行することはできません。 – samfisher

+0

今、この機能は5.0以下で利用可能ではないが、あることそれが低い展開ターゲットを持つことができないということではありません。要するに私のtwitterボタンは、もしiOS 5.0以上ならtwitterを起動し、そうでなければUIAlertViewはその機能が5.0以上でのみ利用可能であると述べています。 –

3

、それがクラッシュします。これは、使用できないメソッドや機能にアクセスしようとしているためです。これを回避するために 方法は、機能が

if(NSClassFromString(@"UIPopoverController")) { 
// Do something 
} 

を使用して利用可能であるかどうかを確認することです(ポップオーバーコントローラは一例です)

また

float version = [[[UIDevice currentDevice] systemVersion] floatValue]; 

を使用してバージョンを確認でき、バージョンに応じて特定のコードを実行します(つまり、iOS 5の場合、別のものを実行します)。

+3

'systemVersion'は' float'として解析可能な値を返すことは保証されていません。実際、現在は完全に解析可能な値を返していません。 –

3

ユーザーが使用しているiOSのバージョンに依存しているかどうかを確認します。 Exempleは、iOSの5でのiOS 4にUIのほとんどは変更はなく、する外観APIがありますので、あなたはそのような場合は少しを作成する必要があります。

// not supported on iOS4 
UINavigationBar *navBar = [myNavController navigationBar]; 
if ([navBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) 
{ 
    [navBar setBackgroundImage:[UIImage imageNamed:@"bg.jpg"] forBarMetrics:UIBarMetricsDefault]; 
}