私は、iPhoneアプリケーション内のすべてのAPIデータ呼び出しを処理する "Folio APIWrapperv2"と呼ばれるシングルトンラッパークラスを持っています。ASIHTTPRequest内のスレッディング
このクラスは、サーバーからJSONを取得するためにASIHTTPRequestを実装しています。 ASIHTTPRequestが終了すると、requestFinished:が呼び出されます。この方法では、データの追加処理が完了してから数秒かかる場合があります。それはメジャーではありませんが、それはブロッキングコールのように、アプリを少し遅くします。これを修正するために、GCDを使用して新しいスレッドを作成します。この機能は、ラインでASIHTTPRequestの「handleBytesAvailable」方法で呼び出されている
[FolioAPIWrapperv2 respondsToSelector:]: message sent to deallocated instance 0x245050
:
if ([[self delegate] respondsToSelector:[self didReceiveDataSelector]]) {
は、私は何が起こっているのかわからないんだけど、このスレッドが実行されるときしかし、私は次のエラーを取得しますここに。 FolioAPIWrapperv2はシングルトンクラスなので、割り当てを解除しないでください。私はオンラインで検索してみて、人々がスレッドで持っていた他の問題を知り、適切な解決策を見つけることができませんでした。誰にもアイデアはありますか?
さて、私はいくつかのテストを行い、スレッドがシングルトンのメソッドを呼び出すと、割り当てが解除されることを発見しました。スレッドがシングルトン内のメソッドを呼び出さない場合、それは機能します。ここで何が起こっているのか知っていますか? –
@MichaelD。さっぱり分からない! deallocにブレークポイントを貼り付けて、ブレークポイントのリリース/ autoreleaseに失敗した場合は、割り当て解除を行っているコードが表示されます。 – JosephH