我正在开发的应用程序使用 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;
...
}
...
}
根据分析器,没有内存泄漏;但是,我的应用程序在处理文件时会占用大量内存。我的猜测——自动释放只有在我处理完文件之后才会出现。我可以在不切换到手动内存管理的情况下修复它吗?