Многопотоковые документы Apple не отображают NSIndexPath
как потокобезопасные или нет! Как неизменный класс, я обычно ожидал, что он будет потокобезопасным.
Ранее я уверен, что документация, используемая для указания того, что экземпляры NSIndexPath
были разделены и глобально уникальны. Это, кажется, исчезло сейчас, хотя, что привело меня к подозрению, что дизайн был пересмотрен для iOS5/Mac OS X 10.7.
Я вижу довольно много отчетов о сбоях от клиентов в Mac OS X 10.6 (Snow Leopard), которые, похоже, сбой, пытаясь получить доступ к указательному пути. Таким образом, я задаюсь вопросом: являются ли фактические потоки потоками безопасными, но что логика вытаскивания их из общего кэша не является? Кто-нибудь знает?
Здесь пример трассировки стека 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
Для меня это экземпляр NSIndexPath
, пытающийся сравнить себя с деаллоцированным экземпляром.