当我收到NSNotification
时是否需要投下notification.object
?假设我知道notification.object
将是MyClass
一个实例,我做到以下几点:对NSNotification中的对象是否需要铸造?
MyClass *myClass = notification.object;
是任何铸造必要吗?如何是上述分配不同:
MyClass *myClass = (MyClass *)notification.object;
当我收到NSNotification
时是否需要投下notification.object
?假设我知道notification.object
将是MyClass
一个实例,我做到以下几点:对NSNotification中的对象是否需要铸造?
MyClass *myClass = notification.object;
是任何铸造必要吗?如何是上述分配不同:
MyClass *myClass = (MyClass *)notification.object;
不,这完全是不必要的,不会改变任何有关您的程序的行为。铸造只在编译时发生,而在指针的情况下,仅用于确保编译器知道该对象是什么类型。
例如,如果您是将Subclass
类型的变量设置为返回类型Superclass
的方法的结果,则编译器可能会抱怨分配,您知道要返回的实际对象是键入Subclass
。在那种情况下,你会投到子类。例如,
MyViewController * vc = (MyViewController *)[someWindow rootViewController];
类型的notification.object
是id
,一个通用对象的指针,并且编译器是完全愉快分配这样的指针的任何其它类型的指针。
号Objective-C中不需要来自id
类型到另一种类型的对象的铸造。