2016-07-30 141 views
0

我有什么应该是一个简单的代码,对于我来说是奇怪的失败。Unity/Objective-C:将char *转换为NSString时遇到的麻烦

void MediaShare(char* text, char* furl) { 
    NSString *status = [NSString stringWithUTF8String: text]; 
    NSString *media = [NSString stringWithUTF8String: furl]; 

    [[SocialShare sharedInstance] mediaShare:status media:media]; 

文本只是Twitter共享文本的一行,而furl只是一个文件位置字符串。我得到了一个崩溃,通过了这个函数,这个函数可能会导致错误的数据通过。在这个函数的头部放置一个断点产生以下各项

Image of Xcode variable monitor

这两个值看起来很好,但不知道是否只包含的第一个字符的*值是一个问题。

无论如何,跳转到最后,状态和媒体似乎都转换为十六进制值。

Converted to hex values?

任何想法?为了给出完整的故事,这是一个Unity插件。我只是将Unity C#中的两个字符串传递给此函数。 非常感谢。

+0

在mediaShare:call之前设置一个断点,看看你在状态和媒体中得到了什么。 – gnasher729

回答

0

如果输入值格式正确,代码看起来很好C char *字符串可以解释为UTF-8编码的字符串。

statusmedia是函数末尾的十六进制值,它们是。两者都是指向Objective-C对象的指针,所以这是预期的。将它们打印到调试控制台或在调试控制台上使用po status来检查它们的内容(它将打印-description方法status的结果,这是该情况下的字符串内容)。

随后的崩溃可能在代码中的其他地方引起。

什么是崩溃的日志输出?

+0

谢谢,我确实误解了调试器,崩溃在我自己的代码中的其他地方。一些NSLogs告诉我这些值实际上很好。 – kathode