2016-07-30 89 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