Ответ о реализации по умолчанию isEqual:
является исчерпывающим. Поэтому я просто добавляю заметку о реализации по умолчанию hash
. Вот оно:
-(unsigned)hash {return (unsigned)self;}
Т.е. это то же самое значение указателя, которое используется в isEqual:
. Вот как это можно проверить:
NSObject *obj = [[NSObject alloc] init];
NSLog(@"obj: %@",obj);
NSLog(@"hash: %x",obj.hash);
Результат будет примерно таким:
obj: <NSObject: 0x16d44010>
hash: 16d44010
С наилучшими пожеланиями.
Кстати, в iOS 8 hash
стало свойством, а не методом, но оно есть.