【发布时间】:2013-11-11 08:02:13
【问题描述】:
偶然发现以下情况:
我使用 3-rd 方 C++ 库。
lib 的头文件:
#define lib_fname char
typedef lib_fname* lib_l_fname;
Function(lib_l_fname name);
我的代码(我需要调用那个函数):
Function ((lib_l_fname)[@"name" UTF8String]);
这在非 ARC 项目中有效,但在 ARC 中我有一个错误 - “ARC 不允许将 Objective-C 指针转换为 lib_l_fname (aka char*)”
我试过了
Function ([@"name" UTF8String]);
但它没有用。有解决办法吗?
【问题讨论】:
-
没有找到任何有用的东西,很遗憾
-
您需要先复制它(使用
strcpy),因为该函数返回NSString对象的内部指针。我不知道为什么它会特别导致这个错误,但如果你这样做,它可能会消失(无论如何你都需要这样做)。 -
我没有遇到这样的问题。我使用 LLVM 5.0 编译器。它编译时没有错误和警告。 UTF8String 方法返回指向 C 字符串的指针,因此复制不应该改变任何东西。
-
Function ((lib_l_fname)@"name" )会导致上述编译器错误,但不会导致Function ((lib_l_fname)[@"name" UTF8String])。
标签: c++ ios objective-c casting