Cocoa兼容不同的Mac OS

时间:2012-12-05 07:03:03

标签: objective-c macos cocoa

我有一个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;
}

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

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

如果以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;
}