2009-04-09 39 views

回答

8

虽然您可以实现符合UIApplicationDelegate协议的多个类只有一个,第一个会接收这些消息。

实现一个协议来创建委托只是方程的一部分。然后该代表必须注册生成消息的代码,这些系统通常只支持一个代理。

在UIApplication的情况下,您可以使用UIApplication共享类中的'delegate'属性更改委托,但这会替换原始委托,而不会添加额外的委托。

如果您需要向其他系统广播UIApplication级别的消息,那么这是您应该添加到您的现有代理的功能。

5

您可以实现多个采用UIApplicationDelegate协议的类,但在任何给定时间只能有一个实际的委托。它由[UIApplication sharedApplication].delegate设置,通常由主NIB文件通过插座连接设置。

4

只要符合协议不会将您的对象设置为委托,您需要明确地在笔尖或代码中执行此操作。如前所述,一次只有一个对象可以成为代表。拥有多个委托可能在某些情况下有意义 - 例如,如果您有一个显示两组数据的表视图,则可以为它创建两个委托和数据源对象,并根据需要在它们之间切换。尽管这对于应用程序的委托来说可能没有意义,因为代码非常具体。

请记住,除了调用委托方法外,有时对象还会发送通知。很多时候,它们看起来像是同一件事,因为如果对象包含特定的方法签名,该对象将自动为您的委托添加通知。但关键的区别在于除委托之外的其他对象也可以订阅这些通知,因此您可以一次将它们连接到多个对象。

1

丹尼尔·迪克森说:

您可以实现采用了UIApplicationDelegate协议的多个类,但只有一个可以在任何给定的时间实际委托。它由[UIApplication sharedApplication] .delegate设置,它通常由主NIB文件通过插座连接建立。

...但知道你可以在运行时将它们交换出去,如果你需要的话。我最近考虑使用这种技术作为合并由不同方开发的不能共享源代码或重构的两个应用程序的方式;但需要在设备上的单个图标下共同定位。

相关问题