Можно ли заставить Objective-C вызывать конкретный экземпляр виртуального метода вместо стандартной отправки виртуального сообщения? Я знаю, что это, как правило, плохая идея, но я хотел бы знать, как это сделать, используя среду выполнения Objective-C.
Например, учитывая классы A и B, которые реализуют - (void) foo, где B - это подкласс A, я хотел бы вызвать метод foo для A с экземпляром B (даже если B обычно обрабатывает это сообщение).
Я знаю, что могу добиться этого, переместив кишки метода foo в новый метод и делегировав его, но я хотел бы найти какой-то способ сделать это во время выполнения Objective-C.
ПРИМЕЧАНИЕ. Для целей этого вопроса предположим, что я не могу изменить источник A или B, и я тщательно взвесил риски нарушения инкапсуляции.