Определенно возможно использовать среду выполнения ObjC, но это будет немного проблематично ... Это ссылка на документы Apple: Objective-C Runtime и пример ее использования: Цель -C Runtime Программирование .
Вы должны выполнить итерацию по всем свойствам, проверить их атрибуты, чтобы найти те, которые вы можете установить (то есть пропустить свойства только для чтения), получить их метод getter для суперкласса, прочитать значение и установить с помощью метода setter на подклассе.
В конкретном случае UIView это может сработать - вы настроите его, пока он не заработает. Как правило, это может быть сложно: как насчет иваров, которые не выставлены как свойства? Вы хотите скопировать их всех? Затем вам нужно будет проверить свойства, определенные в классе, и все протоколы, которые реализует класс. И я не уверен, если не будет необходимости перебирать все суперклассы вашего суперкласса, чтобы получить все определенные свойства и ivars.
Но, тем не менее, это возможно.
UPDATE
Если бы вы копировали переменные экземпляра, то, вероятно, вы были бы установлены, даже не трогая свойства - я предполагаю, что в конечном итоге все состояние сохраняется в ivars. Таким образом, в этом случае также не нужно трогать свойства, определенные протоколом.
Но другое решение, которое может работать достаточно хорошо, - это просто придерживаться общедоступного интерфейса (на самом деле его часть: только то, что кажется данными, а не функциональностью): считывать данные через свойства суперкласса и устанавливать, используя свойства производный класс, снова предполагая, что классы будут делать правильные вещи с данными. В этом случае свойства протокола одинаково важны, поскольку они также являются частью открытого интерфейса, и их реализация может сохранять состояние в переменных экземпляра.
Опять же, я бы не стал использовать этот подход в качестве общего решения для копирования какого-либо класса, но в случае дублирования данных одного конкретного класса, который мог бы работать достаточно хорошо, и вы можете легко и тщательно протестировать ваш случай.