我们可以通过发送消息给对象出发特定动作,但对象发送某些变化的时候用什么方法通知我们呢?对的,通过回调函数(callback)。对象在特定事件发生的时候,就会调用对应的回调函数,触发业务逻辑。
在iPhone的开发框架中,回调函数通过所谓的代理(Delegation)来实现,举例说明:每个UITextView对象都有一个delegate属性,该属性指向一个特定的对象,所谓特定指的是该对象遵从特定的协议(Protocol),这个与Java中的Interface应该是同一概念,指的是预定义方法的集合,如:
@protocol UITextViewDelegate@optional-(BOOL) textViewShouldBeginEditing: (UITextView *)text View;-(BOOL) textView:(UITextView *)text View shouldChangeTextInRange:(NSRange) range raplacementText:(NSString *)text;-(void) textViewDidChange:(UITextView *)textView;@end
单对象的特定事件触发的时候,对象就会调用delegate指向对象对应的协议方法。在苹果的开发文档中,每个协议都有单独的页面列出所有的方法和参数。