Что такое сигнатура метода (другими словами, как метод определяется в интерфейсе)?
Или вы имеете в виду, что вы хотите определить метод в классе B, чтобы позволить экземпляру класса A вызывать этот метод и передавать его в качестве одного из параметров? Если это так, отправитель: (id) часто используется как общий способ сделать это. Например, в NSWindow,
- (void)makeKeyAndOrderFront:(id)sender;
- (void)orderFront:(id)sender;
- (void)orderBack:(id)sender;
В рамках реализации этого метода вы можете сделать что-то подобное, чтобы определить, что делать:
- (void)makeKeyAndOrderFront:(id)sender {
if ([sender isKindOfClass:[NSWindowController class]]) {
// do something
} else if ([sender isKindOfClass:[MyCoolClass class]]) {
// do something
} else if ([sender respondsToSelector:@selector(whyDidYouOrderMeFront)]) {
// do something
} else if ([sender conformsToProtocol:@protocol(someCoolProtocol)]) {
// do something
} else {
// do something
}
}