Вы не можете сделать это в Objective-C, единственная работа вокруг, я мог бы предложить, отправив ссылку отправителя, когда вы сообщение вашего класса, такие как:
@implementation Animal
-(void) move:(id)sender{
id *object = [object that called move];
}
@end
Призвание:
@implementation C1
...
[self.animal move:self];
...
@end
@implementation C2
...
[self.animal move:self];
...
@end
Затем вы можете использовать isMemberOfClass: или isKindOfClass: для определения типа объекта, отправителя, isKindOfClass вернет YES, если рассматриваемый класс является классом, который вы отправляете, или подклассом этого. В то время как isMemberOfClass: будет возвращать только YES, если класс вы обмена сообщениями является экземпляром класса, который вы отправляете его
пример:
A * aClass; // is just A
[...]
B * bClass; // is a subclass of A
[...]
[aClass isMemberOfClass:[A class]]; // YES
[bClass isMemberOfClass:[A class]]; // YES
[aClass isKindOfClass:[A class]]; // YES
[bClass isKindOfClass:[A class]]; // NO
Там нет ничего подобного, что в языке - какие проблемы вы пытаетесь решать? –
Возможный дубликат [Как узнать, кто вызвал метод?] (Http://stackoverflow.com/questions/1793999/how-to-find-out-who-called-a-method) также [Как узнать кто является вызывающим?] (http://stackoverflow.com/questions/1373991/) и хороший ответ от bbum в [Finding, откуда был вызван метод] (http://stackoverflow.com/questions/1614208/finding -где-а-метод был-называемый-с). –
Передача 'sender' является распространенной идиомой при достижении этого. Например, подумайте о кнопке. Вы должны добавить обработчик к кнопке, и после выполнения действия на кнопке он вызывает обработчик, проходящий сам по себе как отправитель. – Jeremy