【问题标题】:Objective-C ARC - Sharing OwnershipObjective-C ARC - 共享所有权
【发布时间】:2013-02-15 19:57:33
【问题描述】:

我真的没有桥接演员表。我有以下代码:

*value = (__bridge CppBridge*)_r->get_bridge();

其中 CppBridge 是一个 Objective-c 类,_r 是一个类型为 rb::typed_object 的变量,它是一个 C++ 类。 C++ 类保留从 get_bridge() 返回的对象...实际上,我想与 C++ 类共享所有权。换句话说,我希望 Objective-C 代码和 C++ 代码都将 +1 添加到对象,因此它将变为 +2 保留计数。每个人都会在某个时候变为-1。我应该使用什么? __bridge 还是 __bridge_transfer?

【问题讨论】:

  • 是否需要使用其中的任何一个?如果完全移除演员表会发生什么(假设 get_bridge() 被声明为返回 CppBridge *)?
  • 我想从 C++ 类中返回 void,因为我希望 .h 文件在纯 C++ 场景中使用。但是我可能会放弃这个要求,因为这件事很难理解......
  • 您可以使用宏来“隐藏”真正的返回类型,除非标头包含在 Objective-C 中:#ifdef __OBJC__ #define OBJTYPE CppBridge #else #define OBJTYPE void #endif
  • 嗯...很好!!!我想我会这样做。但是为了知识起见,我想知道我应该如何在Objective-C和C++对象之间架起桥梁。
  • 如果您希望 C++“保留”一个 Objective-C 对象,理想情况下 C++ 应该是 Objective-C++。反之则无所谓(鉴于 C++ 不使用引用计数)。

标签: objective-c casting automatic-ref-counting


【解决方案1】:

问题解决了。我决定使用 Objective-C++ 并使用 trojanfoe 解决方案。非常感谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多