使用NSPopovers时,Mac OS X App向后兼容性为10.6和10.7

时间:2011-08-04 12:13:48

标签: objective-c backwards-compatibility undefined-symbol

在为Mac OS X 10.7构建应用程序时,实现向后兼容性的最佳方法是什么,但同时保持10.6兼容?

我有一个应用程序,当客户端是10.7时使用NSPopover,当客户端是10.6时使用NSMenu。问题是,当在10.6机器上启动应用程序时,应用程序崩溃时出现“未找到符号”异常,说在AppKit中找不到“_ OBJC $ _ NSPopover” ”。我是否必须在整个应用程序中使用id来获取新功能?

1 个答案:

答案 0 :(得分:2)

您可以使用函数NSClassFromString()获取NSPopover的类对象,这将返回一个Class对象,您可以使用它来创建实例,例如

id  thePopover = [[NSClassFromString(@"NSPopover") alloc] init];

另一种可能性是有两个单独的nib文件,一个用于10.6,一个用于10.7,nib不必是完整的接口,只是包含NSPopover的部分,然后在运行时加载适当的nib文件。 / p>