1

Mac OS 10.7 と 10.8 で異なる機能を持つ Cocoa アプリがあります (展開ターゲットは 10.7 です)。たとえば、10.8 ではボタンがSharing Serviceあり、10.7 ではボタンが非表示になっています。

ここでの問題は、アプリの実行中にどの種類の Mac OS が存在するかをどのように知ることができるかということです。iOSの場合は、から入手できますUIDevice。しかし、ココアの場合、同様のクラスが見つかりません。

現在、次を使用してOSを検出します。


- (BOO)isServiceAvalable
{
   if (NSClassFromString(@"A_Unique_Class_In_One_OS"))
    {
        return YES;
    }
    return NO;
}

もっとエレガントな方法があることを願っています。

4

2 に答える 2

0

scorpiozjが言及しているように、Gestaltが非推奨になっている場合は、NSApplescriptを使用する簡単な方法を次に示します...

NSString* getSystemVersion() {
    NSString* returnString = nil;
    NSString* cmd = @"return system version of (get system info)";
    NSAppleScript* theScript = [[NSAppleScript alloc] initWithSource:cmd];
    NSDictionary* errorDict = nil;
    NSAppleEventDescriptor* result = [theScript executeAndReturnError:&errorDict];
    [theScript release];
    if (errorDict) {
        returnString = [NSString stringWithFormat:@"Error:%@ %@", [errorDict valueForKey:@"NSAppleScriptErrorNumber"], [errorDict valueForKey:@"NSAppleScriptErrorMessage"]];
    } else {
        returnString = [result stringValue];
    }
    return returnString;
}
于 2012-12-05T09:00:55.717 に答える