什么最能描述应用程序代表? 它如何融入整个概念?

我想要了解App Delegate的function。 它有一些很好的方法,比如-applicationDidFinishLaunching ,它将在应用程序完成启动时调用,依此类推。 但究竟是什么呢? 是否在UIApplicationMain函数中实例化了一些对象?

我的应用程序中的每个类都可以访问该App Delegate对象,它是如何工作的? 网上是否有任何可视化这些关系的好图表?

在Cocoa中,委托是另一个对象在行为问题上遵循的对象,并告知其状态的变化。 例如,UITableViewDelegate负责回答有关在进行选择或重新排序行时UITableView应如何表现的问题。 UITableView询问何时想知道特定行应该有多高。 在模型 – 视图 – 控制器范例中,委托是控制器,许多委托的名称以“控制器”结尾。

有明显的风险,UIApplicationDelegate是UIApplication的代表。 在Cocoa(Mac)中的关系比在Cocoa Touch(iPhone)中更明显,因为NSApplication委托能够更直接地控制NSApplication的行为(例如阻止应用程序终止)。 iPhone不允许对UIApplication进行太多控制,因此UIApplicationDelegate主要通知变更而不是积极的决策过程。

UIApplicationDelegate并非在应用程序的任何位置严格提供。 单例UIApplication是([UIApplication sharedApplication]),通过它你可以找到它的委托。 但这并不意味着应用程序中的每个对象都可以直接与应用程序委托对话。 一般来说,我不鼓励开发人员让随机对象与应用代表交谈。 通过单例,NSNotification或其他委托对象可以更好地解决以这种方式解决的大多数问题。

至于它的创建,在Mac上,应用代表没有什么神奇之处。 它只是在大多数情况下由NIB实例化和连接的对象。 但是,在iPhone上,如果由UIApplicationMain()实例化,则app委托可能会有些神奇。 第四个参数是一个NSString,表示app委托的类,UIApplicationMain()将创建一个并将其设置为sharedApplication的委托。 这允许您在没有NIB的情况下设置委托(在Mac上非常困难)。 如果UIApplicationMain()的第四个参数是nil(就像它在Apple模板中那样),那么委托就会由主NIB创建并连接,就像主窗口一样。

该对象以这种方式实例化;

main函数在info.plist中查找主nib集。 nib具有app委托,它被设置为某个必须实现UIApplicationDelegates及其所需方法的类。 然后app委托加载一些viewcontroller。

它作为影响整个应用程序的事件的应用程序范围的回调对象,例如低内存等。