Gli oggetti NSManagedObjectContext hanno ottenuto performBlock: ed eseguonoBlockAndWait: metodi aggiunti per semplificare la concorrenza. Li ho usati - potenzialmente abbastanza ingenuamente - e mi sono appena reso conto che c'è una domanda che non ho mai fatto.È possibile utilizzare un oggetto NSManagedObject al di fuori del suo performBlock del contesto?
Se creo una sottoclasse NSManagedObject all'interno di uno dei metodi performBlock, il thread 'home' è il thread del suo contesto padre - che nel caso di NSPrivateQueueConcurrencyType è probabilmente un thread indipendente a cui non ho altri accessi.
Quindi è necessario effettuare una chiamata PerformBlock solo per accedere ai dati contenuti nei miei oggetti gestiti? O c'è una magia di sottofondo in grado di aiutarmi a proteggermi in caso di utilizzo di getter? (O setter, anche se sembra una cattiva idea ...)
Grazie, praticamente quello che stavo pensando era necessario ... Speravo di aver sbagliato. Ho bisogno di rivedere il video del WWDC in cui hanno introdotto la tecnica, perché non ricordo che debbano farlo ... Poi, di nuovo, sospetto che ci siano molti video WWDC che devo rivedere. – RonLugge
Vorrei solo aggiungere che i tecnici Apple affermano esplicitamente che le letture su "NSManagedObject" non sono thread-safe perché i dati di base fanno il caching e le scritture cache non sono thread safe –