среда, 22 апреля 2009 г.

20.04.09. Introspection. Сравнение объектов.

Cocoa - Introspection 

Обнародование информации объектом о себе во время выполнения. 

Поддержка протокола, место в иерархии, способность отвечать на сообщение. 

isKindOfClass - будет работать с объектом-получателем для класса аргумента и для производных классов от класса аргумента. 

isMemberOfClass - только для класса аргумента. 

respondsToSelector - имеет ли объект реализацию метода? 
- (void)doCommandBySelector:(SEL)aSelector {
if ([self respondsToSelector:aSelector]) {
[self performSelector:aSelector withObject:nil];
} else {
[_client doCommandBySelector:aSelector];
}
}

conformsToProtocol - реализует протокол? 
- (void)doCommandBySelector:(SEL)aSelector {
if ([self respondsToSelector:aSelector]) {
[self performSelector:aSelector withObject:nil];
} else {
[_client doCommandBySelector:aSelector];
}
}

 

Сравнение объектов

 

hash - два одинаковых объекта имеют одинаковый хеш

isEqual - проверяет указатели на равенство

При самостоятельном определении стоит проверить:

  • равенство указателей 
  • совпадение классов
  • совпадение свойств объектов по значению 

Булевские значения - YES, NO

Комментариев нет:

Отправить комментарий