isEqual は、Cocoaのオブジェクト指向プログラミングの世界観を
理解する上で重要なので、おざなりな理解で済ませない方がいいよ。
素直にNSObjectのリファレンスを読みなさい。

- (BOOL)isEqual:(id)anObject

Returns YES if the receiver and anObject are equal, NO
otherwise. This method defines what it means for an instance
to be equal. For example, a container object might define
two containers as equal if their corresponding objects all
respond YES to an isEqual: request. See the NSData,
NSDictionary, NSArray, and NSString class specifications for
examples of the use of this method.

If two objects are equal, they must have the same hash
value. This last point is particularly important if you
define isEqual: in a subclass and intend to put instances of
that subclass into a collection. Make sure you also define
hash in your subclass.