Obiekty NSManagedObjectContext miały performBlock: i performBlockAndWait: metody dodane w celu ułatwienia współbieżności. Używałem ich - potencjalnie dość naiwnie - i właśnie zdałem sobie sprawę, że jest pytanie, którego nigdy nie zadałem.Czy można użyć obiektu NSManagedObject poza jego ustawieniem performBlock?
Jeśli utworzę podklasę NSManagedObject w jednej z metod performBlock, wątek "domowy" jest wątkiem kontekstu nadrzędnego - który w przypadku NSPrivateQueueConcurrencyType jest prawdopodobnie niezależnym wątkiem, do którego nie mam innego dostępu.
Czy muszę wykonać wywołanie performBlock, aby uzyskać dostęp do danych zawartych w zarządzanych obiektach? Czy jest tam magia tła, która pomaga chronić mnie w przypadku korzystania z getters? (Lub setery, choć wydaje się to złym pomysłem ...)
Dzięki, prawie to, co uważałem za konieczne ... Miałem nadzieję, że się mylę. Muszę ponownie obejrzeć wideo z WWDC, w którym wprowadzono tę technikę, ponieważ nie pamiętam, żeby to robili ... Z drugiej strony podejrzewam, że istnieje wiele filmów WWDC, które muszę ponownie obejrzeć. – RonLugge
Chciałbym tylko dodać, że inżynierowie Apple wyraźnie stwierdzają, że odczyty na 'NSManagedObject' nie są bezpieczne dla wątków, ponieważ podstawowe dane buforują, a zapisy w pamięci podręcznej nie są bezpieczne dla wątków –