Apple's multithreading docs Nie wymieniaj NSIndexPath
jako wątków safe, czy nie! Jako niezmienna klasa, generalnie spodziewam się, że będzie bezpieczna dla wątków.Czy wątki NSIndexPath są bezpieczne?
Wcześniej jestem pewien, że dokumentacja używana do stwierdzenia, że instancje NSIndexPath
zostały udostępnione i unikalne globalnie. Wygląda na to, że teraz zniknęło, co doprowadziło mnie do podejrzeń, że projekt został zmieniony na iOS5/Mac OS X 10.7.
Widzę sporo raportów o awariach klientów w systemie Mac OS X 10.6 (Snow Leopard), które wydają się zawieszające, próbując uzyskać dostęp do ścieżki indeksu. Zastanawiam się więc: czy rzeczywiste instancje są bezpieczne, ale czy logika wyrzucenia ich ze współdzielonej pamięci podręcznej nie jest? Czy ktokolwiek ma jakiś wgląd?
Oto przykład stos ślad BTW:
Dispatch queue: com.apple.root.default-priority
0 libobjc.A.dylib 0x96513f29 _cache_getImp + 9
1 libobjc.A.dylib 0x965158f0 class_respondsToSelector + 59
2 com.apple.CoreFoundation 0x948bcb49 ___forwarding___ + 761
3 com.apple.CoreFoundation 0x948bc7d2 _CF_forwarding_prep_0 + 50
4 com.apple.Foundation 0x994b10c5 -[NSIndexPath compare:] + 93
5 com.apple.Foundation 0x99415686 _NSCompareObject + 76
6 com.apple.CoreFoundation 0x948af61c __CFSimpleMergeSort + 236
7 com.apple.CoreFoundation 0x948af576 __CFSimpleMergeSort + 70
8 com.apple.CoreFoundation 0x948af38c CFSortIndexes + 252
9 com.apple.CoreFoundation 0x948fe80d CFMergeSortArray + 125
10 com.apple.Foundation 0x994153d3 _sortedObjectsUsingDescriptors + 639
11 com.apple.Foundation 0x994150d8 -[NSArray(NSKeyValueSorting) sortedArrayUsingDescriptors:] + 566
Do mnie, że jest instancją NSIndexPath
próbuje porównać się do dealokowane instancji.
Co robisz z tymi ścieżkami indeksu i gdzie zdarza się awaria? Wielowątkowość błędów jest tajemnicza, awaria z 'NSIndexPath' niekoniecznie oznacza, że problem występuje w' NSIndexPath'. – hamstergene
Wykonuję żądanie pobierania, a następnie sortuję wyniki na podstawie ich metody '-indexPath'. Wewnętrznie, za każdym razem, gdy jest wywoływana, ta metoda tworzy ścieżkę indeksu, która reprezentuje położenie obiektu w drzewie. Podejrzewam, że jestem rozdawana we współdzielonych 'NSIndexPath's, które są następnie deallokowane wkrótce po innym wątku. –
Skąd pochodzi nazwa NSIndexPath? Czy jest to własność sprowadzonego obiektu? –