1

iOS の新しいバージョンに追加された機能が魅力的な場合がありますが、古いデバイスのユーザーが 1 つのマイナーな機能のためにアプリを使用できないようにしたくない場合があります。

iOS 6 で追加されたアプリに追加UIRefreshControlしたところです。サードパーティのソリューション (いくつかあります) を使用することはあまり気にしません。古いデバイスで実行している場合はアップします。静的言語であるため、これは不可能だと思いますが、これを達成する方法があるかどうかを尋ねてみようと思いました。

もちろん、コードを共有するだけであれば、プリプロセッサ マクロを使用してこれを行うこともできますが、iOS 5.1 + iOS 6.0 で実行するアプリをビルドする必要があります。

4

1 に答える 1

5

これは完全に可能です。クラスが利用可能かどうかを確認してください:

if ([UIRefreshControl class]) {
   // the UIRefreshControl is available.
}

既存のクラスの新しいメソッドと同じです:

if ([self.someLabel  respondsToSelector:@selector(setAttributedText:)]) {
    // The label support attributed strings
}

Objective-c は、ご想像のとおり静的ではありません。以前のバージョンの iOS で利用できないフレームワークを弱リンクするようにしてください。

于 2013-01-29T12:10:15.913 に答える