Анализ файла размером 20 МБ, который слишком велик, чтобы сделать его одним целым на 2G iPod touch.Я закомментировал весь код, кроме части NSData / NSMutableString, и все еще имеет утечку.Я не понимаю ....
метод поддержки для чтения фрагмента из файла:
+ (NSData *) dataWithContentsOfFile:(NSString *)path atOffset:(off_t)offset withSize:(size_t)bytes {
FILE *file = fopen([path UTF8String], "rb");
if(file == NULL)
return nil;
void *data = malloc(bytes); // check for NULL!
fseeko(file, offset, SEEK_SET);
fread(data, 1, bytes, file); // check return value, in case read was short!
fclose(file);
// NSData takes ownership and will call free(data) when it's released
return [NSData dataWithBytesNoCopy:data length:bytes];
}
и кода barebones, который пропускает:
while( cnt<total) {
NSAutoreleasePool* pool= [[NSAutoreleasePool alloc] init];
NSData* data= [NSData dataWithContentsOfFile:fullPath atOffset:cnt withSize:MIN(100000,total-cnt)];
NSString* xmlFragment = [[NSString alloc] initWithBytes: [data bytes] length:[data length] encoding: NSUTF8StringEncoding];
cnt+= [xmlFragment length];
[pool drain];
}