Attualmente sto scrivendo alcuni file su disco in thread in background semplicemente chiamandoios scrivere su disco su sfondo filo
dispatch_async(my_queue,^{
[self writeToRoot:filename data:data];
};
- (BOOL)writeToRoot:(NSString *)path data:(NSData *)content
{
NSString *fullPath = [[self rootPath] stringByAppendingPathComponent:path];
NSString *pathWithoutFile = [fullPath stringByDeletingLastPathComponent];
BOOL directoryExists = [[NSFileManager defaultManager] fileExistsAtPath:pathWithoutFile];
if (!directoryExists) {
NSError *error = nil;
[[NSFileManager defaultManager] createDirectoryAtPath:pathWithoutFile
withIntermediateDirectories:YES
attributes:nil error:&error];
NSParameterAssert(error == nil);
}
return [content writeToFile:fullPath atomically:NO];
}
Sto facendo questo in modo da non sarebbe bloccare il thread principale. La mia domanda è come garantire la sicurezza dei thread. mentre l'operazione di sfondo è in corso, cosa succede quando provo a leggere dal disco del file chiamando:
[NSData dataWithContentsOfFile:fullPath];
si accontenterà corrompere? OPPURE l'operazione di scrittura blocca il file e l'operazione di lettura attenderà che la scrittura sia completata?
Questa è la soluzione che ho finito per usare. Scrittura e lettura dal disco dalla stessa coda. Molte grazie. – wjheng