【问题标题】:Mac OS X App backwards compatibility 10.6 and 10.7 while using NSPopoversMac OS X App 在使用 NSPopovers 时向后兼容 10.6 和 10.7
【发布时间】:2011-10-19 22:50:09
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      相关资源
      最近更新 更多