NSString
ライブラリの関数にパラメータとして渡されるaがあり、NSString
別のライブラリから渡されます。奇妙なことNSString
に、ライブラリの呼び出しにを渡すと、呼び出しは失敗しますが、をに変換してNSString
からint
、にint
戻すとNSString
、すべてが正常になります。
ただし、を使用して印刷するNSLog("%@")
と、2つの文字列は同じになります。これは何が原因でしょうか?エンコーディング?
あなたが
NSStringをintに変換してから、intをNSStringに変換し直します
基本的に、元の文字列とは関係のない文字列のコピーを作成します。
正確に何が起こるかを知るために、2つの文字列をどのように作成するかを知ることは興味深いでしょう。私の推測では、最初のものの割り当てが早すぎるため、呼び出しは失敗します。コピーは保持され、呼び出しは成功します。
ちょっと試してみてください:
失敗している関数を呼び出すとき:
[self doMethodWithString:aString];
ただ行う:
[aString retain];
[self doMethodWithString:aString];
これが機能する場合は、メモリ管理の問題が確認されていますが、実際の修正のために、文字列の作成方法を説明する必要があります...