Приведение говорит компилятору, что переменная представляет определенный тип, даже если она не объявлена как таковая. Это избавит от предупреждений компилятора, но это не повлияет на скомпилированный вывод. В этом случае объявляется, что экземпляр ClassB на самом деле является экземпляром ClassA, поэтому он может вызывать setSomeNumber:
, но это будет работать только в том случае, если объект действительно реализует этот метод. Если объект не является членом ClassA или подкласса, и его класс не реализует метод, ваша программа будет аварийно завершена во время выполнения.