Я не гуру, но, насколько я знаю, есть только 2 способа объявления переменных:
- с использованием статической типизации (когда вы объявляете тип вашей переменной: UIView * myview)
- с использованием динамической типизации (когда вы объявляете свою переменную с помощью «id»: id myObject)
В первом случае тип известен во время компиляции, и компилятор выполнит серию проверок для обеспечения согласованности в вашем коде.
Во втором случае тип не известен, пока во время выполнения.
В любом случае, если вы определили тип переменной (используя id или определенное имя класса), переопределить ее невозможно.
В любом случае вы можете динамически назначать классы, используя NSSClassFromString () избегая длинных операторов if / else или switch.
Более того, вы можете (должны) использовать такие инструменты, как RespondsToSelector: (SEL), чтобы гарантировать, что вы отправите сообщение классу безопасно