Apple's multithreading docs не перечислены NSIndexPath
как темы или нет! Как неизменный класс, я обычно ожидал, что он будет потокобезопасным.Является ли NSIndexPath потокобезопасным?
Раньше я был уверен, что в документации было указано, что экземпляры NSIndexPath
были разделены и уникальны по всему миру. Это, кажется, исчезло сейчас, хотя, заставив меня подозревать, что дизайн был пересмотрен для iOS5/Mac OS X 10.7.
Я вижу довольно много отчетов о сбоях от клиентов на Mac OS X 10.6 (Snow Leopard), которые, кажется, сбой, пытаясь получить доступ к указательному пути. Таким образом, я задаюсь вопросом: являются ли фактические потоки потоками безопасными, но что логика вытаскивания их из общего кэша не является? Кто-нибудь знает?
Вот пример трассировки стека КСТАТИ:
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
экземпляр пытается сравнивать себя с высвобождены, например.
Что вы делаете с этими указательными дорожками и где происходит сбой? Ошибки многопоточности таинственны, сбой «NSIndexPath» не обязательно означает, что проблема находится в 'NSIndexPath'. – hamstergene
Выполняю запрос на выборку, а затем сортирую результаты на основе метода '-indexPath'. Внутренне каждый раз, когда он вызывается, этот метод создает путь индекса, который представляет позицию объекта в дереве. Я подозреваю, что мне передают совместно используемые 'NSIndexPath', которые затем освобождаются вскоре после этого в другом потоке. –
Где находится NSIndexPath? Является ли это свойство выбранного объекта? –