【问题标题】:How can I retrieve Cocoa enum values by name in C++?如何在 C++ 中按名称检索 Cocoa 枚举值?
【发布时间】:2020-04-29 20:50:34
【问题描述】:

我正在使用objc/objc-runtime.h 作为实验用纯 C++ 编写一个 MacOS 窗口应用程序。我能够打开并显示NSWindow,但是在调用initWithContentRect:styleMask:backing:defer: 方法时,我不得不手动输入枚举值styleMaskbacking 作为ints 基于documentation .

这显然不是理想的,即使枚举值不会改变(他们会吗?),因为每次我想改变值时我都必须查看文档。有没有办法使用 objc 运行时库从NSWindowStyleMask 检索枚举值?或者是否有一个可以包含这些定义的普通 C 标头?

另一种方法是自己定义枚举,但我不希望这样做

谢谢 B)

【问题讨论】:

    标签: c++ objective-c cocoa objective-c-runtime


    【解决方案1】:

    可能会有所帮助,它不是“纯”C++:

    1. 编写一个扩展名为.mm的C++文件,即Objective-C++。这将编译 C++,从而允许 Objective-C 构造允许...
    2. #include <Cocoa.Cocoa.h> 获取你想要的枚举
    3. 使用 Clang 编译

    如果您尝试将Cocoa.h 包含在.cpp 文件中,您可能会发现错误。

    您当然可以使用 .mm 中定义的 C++ 函数/类等,来自 .cpp,它 C++。

    HTH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多