tus*_*oyd 5 objective-c objective-c++
在哪里可以找到关于在Objective-C中使用C++的具体文档或dos和donts文档?
Apple似乎已经从他们的网站上删除了该文档,我很困惑地整理了博客中的一些信息和这里发布的问题.
任何人都可以指导相同的事情.
我们何时使用.mm文件,同时混合语法或在.m文件中使用属于C++类的对象?
虽然在属于两种不同语言的函数之间传递对象,比如将objective-c对象传递给cpp文件中的函数,但是有必要在void*中收集它,或者我可以使用(ObjectiveC inteface)*?
您需要使用的Objective-C++,只要你要么#include/ #importING或在同一文件中直接写入两个Objective-C和C++代码.使用显式代码通常很明显; 在#includes为较少的话,你需要小心避免"跑冒滴漏"的语言之一考虑太多其他的.您#import的C++头文件示例是明确的:您只能使用Objective-C++.请注意,如果您Cplusplus是一个struct类型,您可以向前声明它而不是#importC++标头.
如果你在标题中执行此操作,它将"中毒"标题只能在该模式下工作.您需要主动避免这种情况,否则您的整个项目很快就会以.mm文件结束.我在本文和之前的文章中已经记录了一些技术.对于较新版本的Objective-C,您还可以将ivars添加到类扩展中的类中.这意味着您可以在.mm文件中定义C++类型的ivars,而不是标题,它允许.m文件#import.
对于你的第二个问题(请一次只询问一个问题):id类型在objc.h头文件中以C语言定义,因此可以在Objective-C和C++中使用.同样,Objective-C运行时API也是根据C函数公开的,它也适用于C++.如果您确实希望使用C++代码中的规范语法在Objective-C对象上发送消息和访问属性,则需要将该文件切换为Objective-C++.