我是可可接触的新手,并且遇到了似乎没有Google解决方案的问题。我已经在应用程序中添加了一个视图,该视图上有一个按钮。当按下按钮时,我希望回调执行操作。

我的问题是没有调用回调。我在Interface Builder中创建了视图,将内部内部连接连接到了Owner类(在本例中为viewController类),然后选择了适当的回调。

我得到的错误如下:
2009-10-13 17:13:51.708 MyApp [7467:20b] *由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'*-[NSCFSetcontactsButtonPressed:]:无法识别的选择器已发送至实例0x4c27330'

据我了解,这表明contactsButtonPressed和MyViewController之间的连接是错误的。我不确定NSCFSet对象来自何处。

有谁有想法吗?

谢谢!

最佳答案

我得到的错误如下:

2009-10-13 17:13:51.708 MyApp[7467:20b] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[NSCFSet contactsButtonPressed:]: unrecognized selector sent to instance 0x4c27330'



您可能会保留您应该接收的操作消息的任何控制器对象。在控制器的dealloc方法中添加NSLog调用;您可能会发现它在您期望之前已被解除锁定。

然后要问的问题是那个控制器应该拥有什么。然后,确保所有所有者都保留了它。

如果将控制器保留在属性中,请确保您实际使用了该属性。一个常见的错误是编写myController = theController,它绕过属性并直接分配给实例变量,而不是self.myController = theController(属性访问语法,隐式访问器消息)或[self setMyController:theController](显式消息语法)。

另外,如果您已经为属性实现了自己的访问器(尤其是setMyController:),请确保您的setter释放了旧对象并保留了新对象。当然,这是假设您有实现自己的访问器的理由。通常,您应该只@synthesize该属性,然后让编译器为您编写访问器。

07-28 02:38
查看更多