Ole*_*rat 6 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来获取新功能?
您可以使用函数 NSClassFromString() 获取 NSPopover 的类对象,该函数返回一个 Class 对象,您可以使用它来创建实例
id thePopover = [[NSClassFromString(@"NSPopover") alloc] init];
Run Code Online (Sandbox Code Playgroud)
另一种可能性是有两个单独的 nib 文件,一个用于 10.6,一个用于 10.7,nib 不必是完整的界面,只需包含 NSPopover 的部分,然后在运行时加载适当的 nib 文件。
| 归档时间: |
|
| 查看次数: |
863 次 |
| 最近记录: |