2011-10-13 24 views
2

当我收到NSNotification时是否需要投下notification.object?假设我知道notification.object将是MyClass一个实例,我做到以下几点:对NSNotification中的对象是否需要铸造?

MyClass *myClass = notification.object; 

是任何铸造必要吗?如何是上述分配不同:

MyClass *myClass = (MyClass *)notification.object; 

回答

4

不,这完全是不必要的,不会改变任何有关您的程序的行为。铸造只在编译时发生,而在指针的情况下,仅用于确保编译器知道该对象是什么类型。

例如,如果您是将Subclass类型的变量设置为返回类型Superclass的方法的结果,则编译器可能会抱怨分配,您知道要返回的实际对象是键入Subclass。在那种情况下,你会投到子类。例如,

MyViewController * vc = (MyViewController *)[someWindow rootViewController]; 

类型的notification.objectid,一个通用对象的指针,并且编译器是完全愉快分配这样的指针的任何其它类型的指针。

2

号Objective-C中不需要来自id类型到另一种类型的对象的铸造。