我正在使用启用了垃圾收集的 Objective-C 编写程序。它依赖于某个第三方 C++ 库,但它的头文件不能编译为 Objective-C++,所以我有大量纯 C++ 代码和一些 Objective-C++ 来弥补差距。
我在桥中做了这种事情,允许将 Objective-C 对象传递给 C++:
#ifdef __OBJC__
@class NSManagedObjectID;
#else
typedef void NSManagedObjectID;
#endif
我的猜测是这不是正确的做法,因为 C++ 对 Objective-C 的垃圾收集一无所知。如果 C++ 端持有一个引用(我希望如此),而 Objective-C 端什么都没有,我最终会得到一个悬空指针吗?
如果是这样,处理这个问题的正确方法是什么?
最佳答案
所以当我说“垃圾收集”时,我真的应该说“自动引用计数”。而且我正在寻找的似乎是桥接 Actor (“这些 Actor 是必需的,以便将对象传入和传出 ARC 控制”):
http://clang.llvm.org/docs/AutomaticReferenceCounting.html#objects.operands.casts
关于c++ - Objective-C 垃圾回收和 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9303750/