1

iPhone アプリの Base + Active SDK を 3.0 に、Deployment Target を 2.2 に設定した場合、2.2 デバイスで新しいバージョンの関数を使用できますか?

たとえば、UITableViewCell現在では を使用して画像を設定する必要がありますが[cell.imageView setImage:image]、2.2 では を呼び出す必要がありまし[cell setImage:image]た。[cell.imageView setImage:image]2.2 デバイスで新しいクラッシュを使用しますか?

4

2 に答える 2

3

いいえ、2.2 で OS 3.0 を呼び出すことはできません。非推奨のメソッドは、少なくとも OS 3 では正常に動作するはずです。OS で多くの場合非推奨とされているのは、Apple が非推奨のメソッドではなく新しいメソッドの使用を推奨していることを意味します。しかし、それらの方法も将来消える可能性があります。

いくつかのオプションがあります:

  1. アプリとメソッドが OS 3.0 で実際に動作する限り、警告を無視するだけです。
  2. ランタイム チェックを行って OS のバージョンを特定し、適切なメソッドを呼び出します。

    double version = [[[UIDevice currentDevice] systemVersion] doubleValue];
    if (version >= 3.0) {
        [cell.imageView setImage:image];
    } else {
        [cell setImage:image];
    }
    

    またはさらに良い:

    if ([cell respondsToSelector:@selector(imageView)]) {
         [cell.imageView setImage:image];
    } else {
         [cell setImage:image];
    }
    

    ifdefディレクティブを使用したコンパイル時のチェックは機能しないことに注意してください

  3. OS 2.2 のサポートを終了します。3.X の普及率は非常に高いため、3.0 のみをターゲットにすることも妥当です。私の小さなアプリの場合、12 月には、3.0 より前のシステムに 2,058 人のユーザーのうち 27 人のユーザーがいました。言うまでもなく、このオプションにより、テストの必要性が大幅に軽減されます。

于 2010-01-06T12:57:56.290 に答える
1

いいえ、2.x デバイスで OS 3.0 呼び出しを使用することはできません。3.0 を対象としたアプリを 2.x デバイスにインストールできるとしたら、私は驚きます。

于 2010-01-06T12:35:10.567 に答える