1

最近、iPhone と iPod Touch のアプリケーションをアプリ ストアに正常に送信しましたが、iPad 3.2 では動作せず、スケーリングされたバージョンの 4 のような iOS の高い iPad では動作することが後でわかりました。

理由: ムービー プレーヤーの setOrientation プロパティ。

実際のクエリ:MACデスクトップのiPad 3.2で動作させるために使用しました

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
        player.view.frame = CGRectMake(0, 0, 768, 1024);
        [self.view addSubview:player.view];
        [player play];
    }
    else {
                #ifdef __IPHONE_4_0
                     player.controlStyle = MPMovieControlStyleNone;
                #else
                     [player setOrientation:UIDeviceOrientationPortrait animated:NO];
}

iOS 3.0 を搭載した MAC BOOK で同じコードを実行すると、このコードはエラーをスローしています...サポートされていません。

そう

  • 上記のコードを MAC デスクトップ (iOS 4) でビルドすると、iOS 3.0 の iPhone デバイスで動作しますか? ..Event Kit Frame Work を参照してください (iOS 3.0 ではエラーが発生しますが、iOS 4 では必要です)。

  • ユニバーサルではなく、個別の iPad アプリを使用する必要がありますか?

  • iOS 3.2 搭載の iPhone と iOS 3.2 搭載の iPad で、使用されるプロパティに違いはありますか?

4

2 に答える 2

0

コンパイル時にそのようにハードコーディングするべきではないと思います。代わりに、特定のクラスまたはクラスのメソッド/プロパティが存在するかどうかをテストしてから、適切なことを行う必要があります。[NSObject replystoSelector:]を使用して、オブジェクトが特定のメソッドを理解しているかどうかをテストするのと同じです。

于 2011-08-03T14:14:43.183 に答える
0

さて、まず第一に、コンパイルにMacデスクトップとMacBookのどちらを使用するかは問題ではありません。「最小iOS」値と「ベースSDK」を混同しているようです。

ベースSDK:コンパイラがコードをチェックするために使用するコードライブラリを参照しますが、アプリが実際に実行されるOSを決定しません。5.0のベースSDKを使用できますが、アプリは3.0システムでも正常に動作する可能性があります。キャッチは、Base SDKと互換性があり、古いOSと互換性のないコードを使用している場合、コンパイラはそれをキャッチしないということです。

最小OS:この値は、アプリが実行されるOSを決定します。

上位OSのコードを使用しているが、下位OSで実行する場合は、実行しているOSのコードでテストしてから、そのプラットフォームに適切なコードを実行する必要があります。

于 2011-08-03T14:15:03.440 に答える