Ho immagini in coredata che sto cercando di caricare pigramente per una vista tabella. Ogni cella utilizza un osservatore per la relativa entità di dati di base per aggiornare l'immagine quando diventa disponibile. Il codice rilevante l'entità è la seguente:Ottenere EXC_BAD_ACCESS quando si utilizza dispatch_async con Core Data
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// The heavy lifting seems to be during firing of the fault and accessing data,
// so i'm trying to do that in the background thread.
UIImage *i = [UIImage imageWithData:self.imageEntity.data];
// I now need to notify observers that the image is ready on the main thread
dispatch_async(dispatch_get_main_queue(), ^{
[self willChangeValueForKey:@"image"];
image = i;
[self didChangeValueForKey:@"image"];
});
});
Il progetto utilizza ARC, non sto ottenendo eventuali errori di compilazione o avvisi, e quando l'eseguo tipo di lavori fino a quando ho scorrimento veloce, e poi ottengo un EXC_BAD_ACCESS sulla linea quando dichiaro l'i.
Cosa mi manca qui?
Hai provato con 'NSZombieEnabled'? – zoul
cosa succede se non si utilizza dispatch_async? corri sul thread principale –
NSZombie non fa più luce extra per me. Se non dispatch_async bloccherà il thread principale e scorrerà molto male. – dizy