2011-08-04 107 views
6

当为Mac OS X 10.7构建应用程序并保持兼容10.6时,实现向后兼容性的最佳方式是什么?使用NSPopovers时,Mac OS X App向后兼容10.6和10.7

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

回答

2

您可以通过使用该功能NSClassFromString()这个返回一个Class对象,你可以用它来例如创建实例得到NSPopover类对象

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

另一种可能性是有两个单独的榫文件中的一个对于10.6和一个对10.7,笔尖不一定是完整的界面,只是包含NSPopover的部分,然后在运行时加载适当的笔尖文件。