5

私はiOSアプリに取り組んでいます。「UIGraphicsBeginImageContextWithOptions」というメソッドを何度か使用しているため、現在iOS4でのみ機能します。この方法はiOS4でのみ使用できるため、現在、私のアプリはiPhone OS 3でクラッシュ/動作しません。この方法を除けば、アプリがiPhoneOS3で動作しない理由はありません。この方法が利用できるかどうかを確認しますか?私は成功せずに以下を試しました:

if([self respondsToSelector:@selector(UIGraphicsBeginImageContextWithOptions)]) {
    UIGraphicsBeginImageContextWithOptions(targetSize, NO, 0.0); // this will crop
}
else 
{
    UIGraphicsBeginImageContext(targetSize);

}

私はこのようなバリエーションだけを試しました:

if([self respondsToSelector:@selector(UIGraphicsBeginImageContextWithOptions:size:opaque:scale:)])

if([self respondsToSelector:@selector(UIGraphicsBeginImageContextWithOptions:)])

成功なし。どんな助けでもいただければ幸いです。

4

3 に答える 3

12

-respondsToSelector:UIGraphicsBeginImageContextWithOptionsはC関数であるため、その存在をテストするようなObjective-Cメソッドを使用することはできません。

ただし、UIKitフレームワークを弱くリンクしてから、UIGraphicsBeginImageContextWithOptionsがNULLかどうかを確認することはできます。

if (UIGraphicsBeginImageContextWithOptions != NULL) {
   UIGraphicsBeginImageContextWithOptions(...);
} else {
   UIGraphicsBeginImageContext(...);
}
于 2010-08-31T08:00:10.733 に答える
1

私も同じ問題を抱えてる。システムのバージョンをテストしてみてください。これは、私がテストしたデバイスでうまくいくようです。

char majorVersion = [[[UIDevice currentDevice] systemVersion] characterAtIndex: 0];
if (majorVersion == '2' || majorVersion == '3')
     UIGraphicsBeginImageContext(...);
そうしないと
     UIGraphicsBeginImageContextWithOptions(...);
于 2010-10-04T16:11:47.837 に答える