如何在目标 c 中将 NSObject 传递给 cpp 代码

How to pass NSObject to cpp code in objective c

本文关键字:cpp 代码 NSObject 中将 目标      更新时间:2023-10-16

我正在尝试将cpp代码与Objective-C集成。在某些时候,我想在 cpp 中使用 NSObject 实例,如下所示:

class Data
{
    NSObject* mParent;
    public void SetParent(NSObject* parent)
    {
        mParent = parent;
    }
    public void SayHello()
    {
         [mParent sayHello:@"World"];
    }
};

可以这样做吗?

这样做是完全可能的,但你必须将代码编译为 Objective-C++,而不是C++。 ARC 还要求您手动管理结构和 POD 类中指针的内存,因此需要(即使没有收到警告也建议您)使用 __unsafe_unretained 标记 Objective-C 指针的类型。

这种

集成级别只能通过使其成为Objective-C类并使用Objective-C++(即将文件扩展名更改为.mm)来实现。

你永远不能让一个C++类以这种方式调用Objective-C。