title: Is NSIndexPath threadsafe?
body: <p><a href="https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Multithreading/ThreadSafetySummary/ThreadSafetySummary.html">Apple's multithreading docs</a> don't list <code>NSIndexPath</code> as threadsafe or not! As an immutable class, I'd generally expect it to be threadsafe.</p>
  
  <p>Previously, I'm sure the documentation used to state that <code>NSIndexPath</code> instances were shared and globally unique. That seems to have disappeared now though, leading me to suspect that design was revised for iOS5 / Mac OS X 10.7.</p>
  
  <p>I'm seeing quite a lot of crash reports from customers on Mac OS X 10.6 (Snow Leopard) which appear to be crashing trying to access an index path. Thus I wonder: are the actual instances thread safe, but that the logic for pulling them out of the shared cache isn't? Does anybody have any insight?</p>
  
  <p>Here's an example stack trace BTW:</p>
  
  <pre><code>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
  </code></pre>
  
  <p>To me, that is an <code>NSIndexPath</code> instance trying to compare itself to a deallocated instance. </p>