iPhone开发中的代理与协议(Delegate and Protocol)

我们可以通过发送消息给对象出发特定动作,但对象发送某些变化的时候用什么方法通知我们呢?对的,通过回调函数(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指向对象对应的协议方法。在苹果的开发文档中,每个协议都有单独的页面列出所有的方法和参数。

你可能感兴趣的:(框架)