日々精進

新しく学んだことを書き留めていきます

NSURLConnectionはdelegateをretainする

NSURLConnectionはdelegateをretainする。
HTTPレスポンスが返ってきたタイミングでリリースする。
よって、delegate:selfとか渡していて、NSURLConnectionオブジェクトを生成したけどHTTPリクエストは送信しませんでした、という場合メモリリークする。
delegateをretainする理由はHTTPレスポンスが返ってくる前にdelegateオブジェクトがreleaseされることを防ぐため、と思われる。
解決策はHTTPリクエストを送信する直前でインスタンスを生成すること。
objective c - Does a NSURLConnection retain its delegate? - Stack Overflow