如果在objective-c中没有获取委托调用,如何查找错误

时间:2011-02-24 06:33:16

标签: iphone objective-c delegates

在Objective-C中实现我的第一个代表。我以为我已经准备好了所有内容,但是我的AddController调用回ListController没有在ListController中被调用。

鉴于我没有得到异常,并且我可以看到代码确实在AddController中调用委托的位置,是否有任何错误查找提示?

例如:

  • 给定“委托”调用(见下文)没有抛出异常,我可以假设我在同一个文件中的委托声明是否正常?

    “[delegate newItemController:self didFinishWithSave:YES];”

  • 鉴于父控制器可以说确实在* .h定义中指定了委托(见下文),那么这意味着我已经正确地在* .m文件中实现了该方法,注意到我得到了没有构建错误?

    @interface RootViewController:UITableViewController {

  • 如果某些项目不喜欢(例如,如果有什么我应该检查的话),是否有一种已知的方式让委托调用失踪而没有例外

感谢

2 个答案:

答案 0 :(得分:2)

我见过的一个没有被调用的委托方法的最常见错误是一个nil委托属性。换句话说,忘记指定委托人是谁?

至于调试技巧,任何时候我都看到没有调用委托的问题是在整个代码中设置断点并逐步执行代码。然后你就可以看到事情的进展以及被召唤的是什么。

另外,你经常提到例外情况。 Objective C不喜欢使用异常,因为它们是一种相对昂贵的语言调用(与Java不同)。 Objective C可以并且确实使用异常,但它们很少见。您可能希望“be”理解您对目标c中的错误处理的理解。

答案 1 :(得分:1)

您是否在AddController中设置了这样的委托变量:

self.delegate = <instance of ListViewController> 

如果尚未设置,则委托将为nil,并且对nil的方法调用将不会产生任何结果。否则,委托调用就不会像那样失踪。

我不明白你的第二点。