gpt4 book ai didi

objective-c - 混合 C++ 和 Objective C

转载 作者:太空狗 更新时间:2023-10-30 03:49:34 25 4
gpt4 key购买 nike

我在哪里可以找到有关将 C++ 与 Objective-C 结合使用的具体文档或注意事项文档?

Apple 似乎已经从他们的网站上删除了该文档,我对整理博客中的一些信息和此处发布的问题感到困惑。

任何人都可以指导大致相同。

When do we use .mm file, while mixing syntax or while using an object in .m file which belongs to a C++ class ?

While passing objects between functions belonging to two different language like passing objective-c object to a function in cpp file is it necessary to collect it in void * or can I use (ObjectiveC inteface)*?

最佳答案

只要您在#include/#import或者直接在同一文件中编写 Objective-C 和 C++ 代码,就需要使用 Objective-C++。显式代码通常很明显; #include 通常不那么重要,您需要注意避免将一种语言“泄漏”到另一种语言中。您的 #importing C++ 头文件的示例非常明确:您只能使用 Objective-C++ 执行此操作。请注意,如果您的 Cplusplus 是一个 struct 类型,您可以像这样转发声明它而不是 #importing 一个 C++ header 。

如果您在 header 中执行此操作,它将“毒化” header ,使其仅在该模式下工作。您需要主动避免这种情况,否则您的整个项目很快就会只剩下 .mm 文件。 I have documented some techniques in this articlepreviously, in this earlier article .对于较新版本的 Objective-C,您还可以将 ivar 添加到类别扩展中的类中。这意味着您可以在 .mm 文件中定义 C++ 类型的 ivar,而不是 header ,这允许 .m 文件#import 它。

对于你的第二个问题(请一次只问一个问题):id 类型在 objc.h header 中定义根据 C 编写的文件,因此可以在 Objective-C 和 C++ 中使用。同样,Objective-C 运行时 API 以 C 函数的形式公开,这也适用于 C++。如果您真的想使用 C++ 代码中的规范语法发送消息和访问 Objective-C 对象的属性,则需要将该文件切换到 Objective-C++。

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

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