【问题标题】:Why does Carbon Menu Manager work in a 64-bit Cocoa application为什么 Carbon 菜单管理器在 64 位 Cocoa 应用程序中工作
【发布时间】:2019-09-06 08:00:27
【问题描述】:

我有一个 64 位 Cocoa 应用程序,由于遗留原因,它调用 Carbon 函数 CancelMenuTracking 来关闭打开的菜单。 CancelMenuTracking 是从com.apple.Carbon动态加载的。

问题是,为什么它可以工作(在 macOS 10.14.4 上)?在删除该文档之前,几乎所有 Carbon Menu Manager 功能都被记录为在 64 位上不可用。

【问题讨论】:

  • 请张贴 com.apple.Carbon 的位置,以便我可以在料斗中看到它
  • @MarekH 菜单功能来自 HIToolbox 子框架,/System/Library/Frameworks/Carbon.framework/Frameworks/HIToolbox.framework
  • lipo -info /System/Library/Frameworks/Carbon.framework/Frameworks/HIToolbox.framework/HIToolbox 胖文件中的架构:/System/Library/Frameworks/Carbon.framework/Frameworks/HIToolbox。框架/HIToolbox 是:i386 x86_64 -> 已为 32 位和 64 位版本编译,但我没有比较它们是否具有相同的调用表(名称函数)。

标签: cocoa 64-bit macos-carbon


【解决方案1】:

嗯,简单的答案是框架内部仍然使用了一些 Carbon —— 菜单肯定是这些领域之一—— 但这是一个实现细节,你可以认为它是一个不应该使用的私有 API,就像CGS 等。

【讨论】:

    猜你喜欢
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多