私が取り組んでいるアプリはARCを使用しています。大きなファイルを処理したかったので、ファイル全体をロードする代わりに、NSFileHandle readDataOfLength メソッドを使用してデータのチャンクをロードしています。ファイル全体が処理されるまで繰り返されるループ内で発生しています。
- (NSString*)doStuff { // called with NSInvocationOperation
// now we open the file itself
NSFileHandle *fileHandle =
[NSFileHandle fileHandleForReadingFromURL:self.path
error:nil];
...
BOOL done = NO;
while(!done) {
NSData *fileData = [fileHandle readDataOfLength: CHUNK_SIZE];
...
if ( [fileData length] == 0 ) done = YES;
...
}
...
}
プロファイラによると、メモリ リークはありません。ただし、私のアプリはファイルの処理中に大量のメモリを消費します。私の推測では、自動解放はファイルを処理した後にのみ行われます。手動メモリ管理に切り替えずに修正できますか?