2011-01-14 11 views
2

私はsdk(3.0と4.0)の両方を維持する必要があります。しかし3.0 sdkではエラーが発生しています。私は両方のsdk(3.0と4.0)を維持する必要があります。しかし、3.0 sdkでエラーが発生しています

CGFloat maxScale; 

if ([[UIScreen mainScreen] respondsToSelector: @selector (scale)] == YES) 
{ 
    maxScale = 1.0/[[UIScreen mainScreen] scale]; 
} 
else 
{ 
    maxScale = 1.0; 
} 


warning: 'UIScreen' may not respond to '-scale' 
error: invalid operands to binary/(have 'double' and 'id') 

どのようにこの問題を解決できますか?

+0

リンゴは3.0のid型としてスケールされていますが、有用ではありませんでした。おそらくバージョンをテストしようとしているかもしれませんが(これはベストプラクティスではないと広く考えられていますが)、ここで唯一の選択肢かもしれません。 –

+3

あなたは本当に**ビルド**あなたのプロジェクトをsdk 3.0でする必要がありますか? – Vladimir

+0

最新のSDK = 4.1を設定し、iOS導入ターゲット= 3.0を設定しました。それはシミュレータでうまく動作します。しかし、私が実際の3G iPhoneにインストールしているとき、私はこのエラーを受け取ります。 – Voloda2

答えて

3

あなたは別のSDKのバージョンをビルドするとき、あなたのコードが異なるようにしたい場合、あなたはプリプロセッサを使用する必要があります。

#if __IPHONE_4_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED 

    maxScale = 1.0/[[UIScreen mainScreen] scale]; 

#else 

    maxScale = 1.0; 
#endif 

しかし、通常、あなたが持っている最新のSDKを使用してプロジェクトをビルドする、という必要はありません。ターゲットの「iOS展開ターゲット」プロパティに適切な値を設定します。その後、指定したSDKバージョンでアプリケーションが実行され、ランタイムが、-scaleメソッドが存在するかどうかがチェックされます。

関連する問題