将选择器发送到另一个类。并创建一个类的实例

时间:2009-10-19 15:31:55

标签: objective-c cocoa

如何将Selector发送到另一个类? 我知道将它发送到您执行的同一文件中的选择器

[self performSelector:@selector(doSomething)];

并将其发送到另一个我尝试过的课程

[otherClass performSelector:@selector(doSomethingElse)];

但是我在调​​试器中遇到错误

+[otherClass doSomethingElse]: unrecognized selector sent to class 0xe5c4

为什么这???


编辑响应Daves回答

'有可能它不是类方法而是实例方法......'

如何创建我的班级实例?

2 个答案:

答案 0 :(得分:3)

从调试消息+[otherClass doSomethingElse]开始,它表示您正在将它发送给类本身,这意味着您正在尝试调用类(静态)方法。

有可能它不是一个类方法,而是一个实例方法,这意味着你应该这样做:

[anInstanceOfOtherClass performSelector:@selector(doSomethingElse)];

答案 1 :(得分:2)

  

- (void)removeObserver {...}

有你的问题。 -符号将此标识为实例方法;它只在类的对象上运行。您需要做的是声明并将其定义为:

+(void)removeObserver …

您可以将其称为:

[JGManagedObject removeObserver];

这样,您就不需要使用performSelector:来避免在向类发送实例消息时收到的错误消息。

为了帮助您,这里是相关的documentation