我将一些C类导入到我的应用中。因此,除了我的.h和.m objective-c类,我还有一些.h和.c C ++类。这样做可以吗?或者我需要将它们编译成.a以便可以使用它们吗?
假设我已经完成了我所做的一切,我想称之为C ++方法
mms_t *mms_connect (mms_io_t *io, void *data, const char *url, const char *host, const char *uri,const char *query,int pport, int bandwidth)
所以这个方法返回一个名为mms_t?
的结构它要求我传入一些char *。 在Objective-C中,我可以在这里传递什么?这种语言有char *吗?我猜我不能在它的位置传递一个NSString?
我从一小段C代码中看到了
strTemp = @"mms://123.30.49.85/htv2";
char *g_tcUrl = new char[[strTemp length] + 1];
使用'new'?
目标c与上述代码相当吗?
非常感谢, -Code
答案 0 :(得分:2)
首先,您必须将Objective-C文件的类型更改为Objective-C ++。您可以通过将文件扩展名更改为.mm
或使用文件信息面板(按住Ctrl键单击,获取信息)来执行此操作。
对于char*
,您可以使用UTF8String
或cStringUsingEncoding:
将NSString转换为C字符串,如下所示:
NSString *foo = @"Foo";
char *fooascii = [foo cStringUsingEncoding:NSASCIIStringEncoding];
char *fooutf8 = [foo UTF8String];
答案 1 :(得分:0)
您可以在Objective C和C ++中自由调用,实际上可以将它们混合在一起。您需要做的就是在适当的时候转换类型。您需要将您的代码文件命名为.mm(技术上为Objective C ++文件),而不是.m文件,以包含C ++头文件。
要将Objective C字符串转换为C样式字符串,请执行以下操作:
const char *cString = [strTemp cStringUsingEncoding:NSUTF8StringEncoding];