Если у меня есть экземпляр класса B, который является подклассом класса A, есть ли способ превратить мой экземпляр класса B в экземпляр класса A без явного написания кода для этого?
Я не имею в виду простое уныние со стандартным синтаксисом C.
Вы можете сделать это с помощью среды выполнения objc (см. object_setClass(id object, Class cls) в справочнике по среде выполнения Objective-C. Однако более важным моментом является то, что вы почти наверняка не хотите этого делать. Если ваш подкласс не следует принципу подстановки Лискова , он не должен быть подклассом (т. е. отношение наследования не подходит, и вам следует выбрать другой дизайн). Вы всегда можете вызвать реализации метода суперкласса с помощью [super someMethod] из вашего подкласса.
object_setClass(id object, Class cls)
[super someMethod]