是否需要在NSNotification上对象进行强制转换?

时间:2011-10-13 19:22:46

标签: objective-c object casting nsnotifications

当我收到NSNotification时,我是否需要投射notification.object?假设我知道notification.object将是MyClass的一个实例,我会执行以下操作:

MyClass *myClass = notification.object;

此处是否需要任何演员?以上作业与以下内容有何不同:

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

2 个答案:

答案 0 :(得分:4)

不,这完全是不必要的,并且不会改变程序行为的任何内容。转换仅在编译时发生,对于指针,仅用于向编译器保证您知道对象的类型。

如果您将类型Subclass的变量设置为返回类型Superclass的方法的结果,编译器可能会抱怨分配,您知道实际对象是将要回来的是Subclass类型。在这种情况下,您将转换为子类。如,

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

notification.object的类型是id,一个通用对象指针,编译器非常乐意将这样的指针指定给任何其他类型的指针。

答案 1 :(得分:2)

没有。 Objective-C不需要从类型id转换到另一个对象类型。