The documentation for -hash says it must not change while a mutable object is stored in a collection, and similarly the documentation for -isEqual:
-hash
-isEqual:
In Java, most mutable classes simply don’t override Object.hashCode() so that the default implementation returns a value that is based on the address of the object and doesn’t change. It might just be the same with Objective C.