Нет, это совершенно ненужно и ничего не меняет в поведении вашей программы. Приведение происходит только во время компиляции, а в случае указателей используется только для того, чтобы убедиться, что вы знаете, какой тип объекта.
Компилятор может пожаловаться на присвоение, если вы, например, устанавливаете переменную типа Subclass
в результате метода, который возвращает тип Superclass
, где вы знаете, что фактический объект, который вы собираетесь получить спина имеет тип Subclass
. В этом случае вы бы бросили на подкласс. Например.,
MyViewController * vc = (MyViewController *)[someWindow rootViewController];
Тип notification.object
- это id
, универсальный указатель объекта, и компилятор очень рад назначить такой указатель для любого другого типа указателя.