gpt4 book ai didi

c++ - 将 C++ 类与 Objective C 类混合

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:20:13 25 4
gpt4 key购买 nike

我使用的是 iphone SDK,主要使用 C++ 进行编码,同时使用 obj-c 中的部分 SDK。在需要 obj-c 类的情况下是否可以指定 C++ 类?例如:

1) 将委托(delegate)设置为 obj-c 对象时。

  • 我无法使 C++ 类派生自委托(delegate)协议(protocol),因此这个原因和可能的其他原因阻止我使我的 C++ 类成为各种 obj-c 对象的委托(delegate)。作为解决方案,我所做的是创建一个 obj-c 适配器类,其中包含指向 C++ 类的 ptr 并用作委托(delegate)(在调用时通知 C++ 类)。每次我需要将委托(delegate)通知发送给 C++ 类时,都感觉很麻烦。

2) 设置选择器时

  • 这与第 1 项密切相关。假设我想设置一个回调以在完成某些操作时触发,例如按下按钮或 UIView 动画功能中的 setAnimationDidStopSelector。如果能够为 setAnimationDelegate 指定一个 C++ 函数以及相关委托(delegate),那就太好了。

好吧,我怀疑这不太可能,但如果有人对如何做到这一点或如何更轻松地编写此类内容有任何建议,我很乐意听取他们的意见。谢谢。

最佳答案

不幸的是,您无法完全避开适配器,但是您可以简化工作。通过使用 Objective-C 运行时库,您可以使用声明性方法为您生成适配器,从而减少困惑。

Objective-C 运行时允许您在运行时构造类,您可以为其方法设置实现函数。使用模板,您可以通过生成调用所需 C++ 方法的蹦床函数,从面向类型的声明生成 Objective-C 类。

started a prototype前一段时间,提到的状态可能足以满足您的情况。可以做得更好,也可以干净地支持属性和分布式对象,但我还没有找到时间来实现更好的版本。

关于c++ - 将 C++ 类与 Objective C 类混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2907859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com