現在、iOS アプリを販売しており、同じコード ベースを使用して XCode 5 DP で iOS 7 バージョンを開発しています。
既存の iOS 5/6 のお客様向けに今すぐアップデートをリリースする必要がありますが、もちろん、プロジェクトを XCode 4 に再ロードすると、Base SDK が 7 ではなく iOS6 になるため、存在しないプロパティについてエラーが表示されます。
// Only run this bit on iOS 7
if ([self respondsToSelector:@selector(setFooForExtendedLayout:)])
{
self.fooForExtendedLayout = UIFooEdgeLeft | UIFooEdgeRight;
}
float bottomOffset = 0;
// Only run this bit on iOS 7, else leave bottomOffset as 0
if ([self.hostController respondsToSelector:@selector(bottomLayoutFoo)])
bottomOffset = self.hostController.bottomLayoutFoo.length;
(NDA 違反を避けるために難読化されています)
XCode エラー:
タイプ「UIViewController *」のオブジェクトにプロパティ「fooForExtendedLayout」が見つかりません
宣言されていない識別子「UIFooEdgeLeft」の使用
宣言されていない識別子「UIFooEdgeRight」の使用
タイプ「UIViewController *」のオブジェクトにプロパティ「bottomLayoutFoo」が見つかりません
この新しいコードをコメントアウトするのは面倒です。古いベース SDK と新しいベース SDK の両方と互換性があるように書き直す正しい方法は何ですか? また、今 (XCode 4 を介して iOS 6 SDK に対してビルドされた) それを提出すると、App Store で拒否されるリスクがありますか?