1

iOS の mod とビルドに完全に取り掛かる時間はまだありませんが、iOS 5.1 および 4.4 SDK で別のアップデートを入手する必要があります。今iOSで人の表示ボタンを1つ変更したいです。これが機能するかどうかはわかりません。私は基本的に、NSClassFromString チェックを使用して後方ではなく前方に進んでいます。これはビルド固有のものですか、それともビルドされた SDK バージョンに基づいているだけですか? iOS のバージョンを確認して、画面のどこに何を表示するかを確認したいだけです。iOS6 の新機能は何もない純粋な古い学校の機能ですが、私は 5.1 で構築し、3.0 をターゲットにしています (まだ)。

if (NSClassFromString(@"UICollectionView")) {

        //  Here is old code to show a simple button
        //  that only shows differently for iOS6

} else {  // same old button that will work as before on older devices

}

ご意見ありがとうございます...

4

2 に答える 2

0

iOSのバージョンを直接聞いてみませんか?

NSString *version = [[UIDevice currentDevice] systemVersion];
if ([version hasPrefix:@"6"]) {
    //  Here is old code to show a simple button
    //  that only shows differently for iOS6
} else {  // same old button that will work as before on older devices

}

編集:

将来の iOS バージョンの安全なコード (はい、それほどきれいではありません):

NSInteger major = 0;
NSString *version = [[UIDevice currentDevice] systemVersion];
NSRange seperator = [version rangeOfString:@"."];
if (seperator.location != NSNotFound)
    major = [[version subStringToIndex:range.location] integerValue];
else
    major = [version integerValue];

if (major >= 6) {
    //  Here is old code to show a simple button
    //  that only shows differently for iOS6
} else {  // same old button that will work as before on older devices

}
于 2012-09-26T15:16:40.280 に答える
0

To make code only available in version a.b.c and after, wrap it in a run-time version check:

if ([@"a.b.c" compare:UIDevice.currentDevice.systemVersion options:NSNumericSearch] != NSOrderedDescending) {
    // only available in a.b.c. and after
}

However, in general it is better not to make any assumptions about the OS version (or the device type), and instead check explicitly for the functionality to be present. Indeed use NSClassFromString(..) to see if a class is available. Use [object respondsToSelector:] to see if an object supports a certain method.

于 2012-09-26T16:14:54.353 に答える