Вы можете быть озадачены типом указателя static и типом фактического объекта, на который он указывает.Рассмотрим этот код:
NSString *test = @"test";
NSNumber *notReallyANumber = (NSNumber *)test;
Это действительный код, но он не "преобразовал" тест в NSNumber.Это по-прежнему строка, просто с указателем неверного типа.
По сути, нет, у вас нет возможности изменить класс переменной (да, но это глубокая глубокая магия и почти никогдапроисходит).