Objective-C 集成 C 库并传递字符串值 - ARC 错误

Objective-C integrating C Library and passing String value - ARC Error

本文关键字:字符串 ARC 错误 集成 Objective-C      更新时间:2023-10-16

我正在尝试将第三方 C 库集成到我的项目中,我以前从未这样做过,并且遇到了应该如此简单的事情的问题,将字符串值传递给 C 函数。

下面是我的代码,失败的行生成以下错误:

"ARC 不允许将 Objective-C 指针隐式转换为 'const char *' '

我的代码:

NSString *myMapCode = @"GBR H4J.XLL";
double lat = 0.0;
double lng = 0.0;
returnValue = mc2coord(&lat, &lng, "GBR H4J.XLL", 0);  // This works perfectly
returnValue = mc2coord(&lat, &lng, myMapCode, 0);      // This is my Problem code

感谢您的帮助。

这里你传递一个NSString,而不是一个 C 字符串:

returnValue = mc2coord(&lat, &lng, myMapCode, 0);

如果该函数需要 C 字符串,则可以更改

NSString *myMapCode = @"GBR H4J.XLL";

const char *myMapCode = "GBR H4J.XLL";

或将NSString转换为 C 字符串:

NSString *myMapCode = @"GBR H4J.XLL";
returnValue = mc2coord(&lat, &lng, [myMapCode UTF8String], 0);

mc2coord函数不接受NSString对象,而是接受 C 字符串或 const char * 。上面,不要将myMapCode保存为NSString而是保存 C 字符串,你会没事的。