gpt4 book ai didi

xcode - 如何将字符串从原生 iOS 插件返回到 unity?

转载 作者:行者123 更新时间:2023-12-02 11:39:06 26 4
gpt4 key购买 nike

我正在创建一个 iOS 插件,它需要向 Unity 返回一个字符串(或 const char*)。我该如何实现它?

最佳答案

我想澄清一下之前的答案。 C# 声明:

[DllImport("__Internal")]
private static extern string getString();

从 objc 返回一个字符串与 @Cabrra 所说的完全一样:

char* convertNSStringToCString(const NSString* nsString)
{
if (nsString == NULL)
return NULL;

const char* nsStringUtf8 = [nsString UTF8String];
//create a null terminated C string on the heap so that our string's memory isn't wiped out right after method's return
char* cString = (char*)malloc(strlen(nsStringUtf8) + 1);
strcpy(cString, nsStringUtf8);

return cString;
}

extern "C" char* getString()
{
const NSString* str = @"string";
return convertNSStringToCString(str);
}

虽然有人提到这种方式会导致内存泄漏,但其实并不对。这种方式在Unity中工作得很好,没有发生泄漏(我测试了很多次)。 Unity clearly states那个

String values returned from a native method should be UTF–8 encoded and allocated on the heap. Mono marshalling calls free for strings like this.

关于xcode - 如何将字符串从原生 iOS 插件返回到 unity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37047781/

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