4

UIGraphicsBeginImageContextWithOptionsランタイム チェックを実行して、iOS 4 以降でのみ使用できる を使用できるかどうかを確認するにはどうすればよいですか。

を確認できることはわかって[[UIDevice currentDevice] systemVersion]いますが、Apple はNSClassFromString()や などを使用することを推奨していrespondsToSelector:ます。respondsToSelector:for C関数はありますか?

4

3 に答える 3

10

これが私が使用してきた別のオプションです。

C 関数はポインターです。フレームワークへのリンクを「弱い」場合UIKit、iOS 3 では関数ポインターは単に になるNULLため、次のようにして関数の存在をテストできます。

if (UIGraphicsBeginImageContextWithOptions)
{
    // On iOS 4+, use the main screen's native scale factor (for iPhone 4).
    UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
}
else
{
    UIGraphicsBeginImageContext(size);
}

参照: Xcode 4 でフレームワークをウィーク リンクするにはどうすればよいですか?

于 2011-07-08T16:39:08.297 に答える
1

ここでおそらく関心があるのは、弱いリンクです。(「リスト3-2: C関数の可用性のチェック」を参照してください。)

于 2011-07-08T16:40:09.030 に答える
-2

これは私が行くものです:

if ([mainScreen respondsToSelector:@selector(scale)]) {
    UIGraphicsBeginImageContextWithOptions(newSize, NO, [[UIScreen mainScreen] scale]);
} else {
    UIGraphicsBeginImageContext(newSize);
}

これで十分だと思いますが、他に良い案があれば回答お願いします。

于 2011-07-08T16:21:54.657 に答える