-isMemberOfClass: полезен при реализации метода -isEqual: в ваших собственных классах. Если у вас есть такой класс:
@interface Person : NSObject {
NSString *name;
NSUInteger age;
}
@property(copy) NSString *name;
@property(assign) NSUInteger age;
@end
И вы хотите, чтобы два объекта Person считались идентичными, если они имеют одинаковые имя и возраст, вы должны реализовать -isEqual: и метод -hash из протокола NSObject::
- (BOOL)isEqual:(id)obj {
return [obj isMemberOfClass:[self class]]
&& [obj name] == self.name
&& [obj age] == self.age;
}
- (NSUInteger)hash {
return [self.name hash] + age;
}
PS: зачем использовать [obj isMemberOfClass:[self class]]
, а не просто [obj class] == [self class]
? В приведенном выше коде это не имеет большого значения, но становится важным, когда вы имеете дело с более сложным кодом, использующим NSProxy. IsMemberOfClass: метод запросит объект, в котором находится прокси, если это член этого класса, что, вероятно, то, что вы хотите.