1

我有一个 Cocoa 应用程序,它在 Mac OS 10.7 和 10.8 中具有不同的功能(部署目标是 10.7)。例如,在 10.8 中我有一个按钮,Sharing Service而在 10.7 中按钮是隐藏的。

这里的问题是我如何知道在我的应用程序运行时存在哪种 Mac OS。对于 iOS,我可以从UIDevice. 但是对于 Cocoa,我没有找到类似的类。

目前,我使用以下方法检测操作系统:


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

我希望有更优雅的方式来做到这一点。

4

2 回答 2

0
于 2012-12-05T08:29:44.157 回答
0

如果 Gestalt 像 scorpiozj 提到的那样被弃用,那么这里有一个简单的 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 回答