委托方法如何知道何时被调用

时间:2012-06-18 22:26:04

标签: iphone objective-c ios ipad delegates

我只是想知道委托方法究竟何时被调用?例如,在UITextFieldDelegate协议中,在文本字段中开始编辑时调用textFieldDidBeginEditing:方法(假设我实现了此方法)。

那么代码究竟是如何检测何时调用textFieldDidBeginEditing:的呢?系统是否只检查textFieldDidBeginEditing:是否已经实现,是否运行该方法?我有没有看到引擎盖下的东西?

2 个答案:

答案 0 :(得分:3)

完全。

我不能保证Apple的框架代码是如何在幕后实现的,但是一个非常普遍的副词是:

if ([[self delegate] respondsToSelector:@selector(someInstance:didDoSomethingWith:)]) {
    [[self delegate] someInstance:self didDoSomethingWith:foo];
}

这允许你有可选的委托方法,这似乎是你的问题。

答案 1 :(得分:0)

代码没有检测到何时致电'委托方法。 textField接收一个事件,并在其上调用该方法的委托(已实现textFieldDidBeginEditing:方法)。

简而言之,当你点击文本字段开始编辑时, textField 会说“哦,我现在正在编辑!'并在内部调用[self.delegate textFieldDidBeginEditing:self],其中委托是您已设置为委托的实例(通常是UIViewController子类)