AFNetworkingでメモリリークが起こったときの対処法
AFNetworking
Objective C のライブラリで超ど定番なHttpClientです。いまさらながら使い始めました。AFNetworking/AFNetworking · GitHub
メモリリーク
AFNetworkingのラッパーを作って既存のAPIとの通信をすべて置き換えました。一応メモリリークを見ておこうと思ってInstrumentsで測定したら、上記の通りメモリリークが多発してました。
解決策
@property (nonatomic, strong) AFHTTPSessionManager *sessionManager;
[self.sessionManager invalidateSessionCancelingTasks:YES];
当然なのですが、AFHTTPSessionManagerAFURLSessionManagerでinvalidateSessionCancelingTasks:を呼んでセッションを無効化しておく必要がありました。明示的に呼んであげないと、AFHTTPSessionManagerが解放されないためメモリリークになっていました。