什么是iOS代理?

时间:2013-10-26 13:06:58

标签: ios objective-c

我一直在讨论关于xcode iOS编程的一些问题,我看到越来越多的人说像“作为blabla的代表”这样的事情:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    currentLocationAnnotation = [annotation retain];
}

但我永远无法帮助我,因为我不明白这意味着什么,我必须把它放在哪里,如果我把它放在我的.m文件中,它就不起作用了,如果我把它放在我的AppDelegate.m它也不起作用。

请帮助:)

3 个答案:

答案 0 :(得分:0)

在你的代码中,这是自定义委托,它意味着它就像一个辅助对象,可以使用在自定义委托中实现的任何方法。

答案 1 :(得分:0)

这是一种设计模式,您可以在其中注册一个对象(委托),该对象确认指定的协议,另一个类的另一个实例,然后在需要委托时调用第一个对象“协议方法”(委托方法)做一些工作。当一个对象只想“外包”它的部分工作时,这通常用于避免不必要的子类化。

答案 2 :(得分:-1)

开始时有点难。类的委托就像该类的事件处理程序。例如,对于地图视图类,您设置一个委托(例如您的自定义类),并在您的自定义类中,开始实现处理程序(它不一定需要处理事件。例如,表视图询问其委托如何它会有很多行,它们的高度等等。例如,在您发布的示例代码中,地图视图要求其委托返回其作为参数发送的注释对象的视图。您需要在类中实现逻辑以返回适当的对象。

用英语来说,把它想象成一封电子邮件:'你好,我的代表,作为你工作的一部分,我希望你给我一个注释的观点,我在下面附上,谢谢,地图视图。'

当然,它需要立即代理人的立即响应,并且“附加在下面”是“注释”参数。希望它有所帮助。