хорошо .. подумайте об объекте .. объектА имеет необязательные свойства, определенные в его протоколе. делегат может или не может реализовать их, но если вы решите реализовать их, вы должны предоставить действительный возврат.
Теперь, что если у меня для objectA.delegate установлено значение objectB, но объект be должен реализовать их все во время компиляции, а во время выполнения решить, какие из них он может поддерживать или не поддерживать.
Проблема в реализации их всех в качестве заглушек означает, что objectA просто будет использовать 'responsedsToSelector', чтобы увидеть, пытается ли делегат использовать необязательные свойства, и если это так, он предположит, что они действительны, и использует их.
Поскольку objectB (делегат) должен условно решать, какие из них реализовать, единственное решение, которое я вижу, - это использование class_addMethod.
Я надеялся, что может быть более элегантное и, возможно, более оптимальное решение, но не уверен, каким оно может быть.