2016-07-30 4 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は単なるファイルの場所文字列です。悪いデータが渡されるというこの機能を過ぎてクラッシュしてしまいました。この関数の先頭にブレークポイントを置くことは、following-

Image of Xcode variable monitor

二つの値が細かい表情を生み出す唯一の最初の文字が含まれている*値が問題であるかどうかわからないが。

とにかく、最後にジャンプし、ステータスとメディアが16進値に変換されているようです。

Converted to hex values?

任意のアイデア?完全な話をするために、これはUnityプラグインです。私はUnity C#から2つの文字列をこの関数に渡すだけです。 ありがとうございます。

+0

mediaShare:の前にブレークポイントを設定して、ステータスとメディアの内容を確認します。 – gnasher729

答えて

0

入力値が整形式で、UTF-8でエンコードされた文字列として解釈できるC char *文字列であれば、コードはこれまでのところよく見えます。

statusおよびmediaは、機能ヒントの末尾にある16進値です。どちらもObjective-Cオブジェクトへのポインタなので、これが期待されます。それらをデバッグコンソールに出力するか、デバッグコンソールでpo statusを使用してその内容を確認します(その場合はstatus-descriptionメソッドの結果が出力されます)。

次のクラッシュはコード内で発生する可能性があります。

クラッシュのログ出力は何ですか?

+0

ありがとう、私は確かにデバッガーを誤解していたし、クラッシュは自分のコードのどこかにありました。いくつかのNSLogsは、これらの値が実際にうまくいたことを私に示しました。 – kathode

関連する問題