Answers:
我通常避免使用安德鲁(Andrew)使用“应用程序的心脏”一词所暗示的设计方法。我的意思是,我认为您应该避免将过多的内容混为一谈-好的程序设计通常涉及通过“关注区域”将功能分开。
委托对象是一个当其连接的对象达到某些事件或状态时会得到通知的对象。在这种情况下,Application Delegate是一个对象,当UIApplication对象达到某些状态时,它将接收通知。在许多方面,它是一种专门的一对一观察者模式。
这意味着AppDelegate的“关注区域”正在处理特殊的UIApplication状态。其中最重要的是:
您应该避免将其他功能放到AppDelegate中,因为它们并不真正属于那里。这些其他功能包括:
许多人因为懒惰或认为AppDelegate控制着整个程序而将这些东西混入AppDelegate中。您应该避免集中在您的AppDelegate中,因为它会使应用程序中需要关注的领域变得混乱,并且无法扩展。
您的应用程序代表是您应用程序的核心。它实际上是您的“程序控制器”。
Application Delegate是接收应用程序级消息的类,其中包括最常用于启动其他视图创建的applicationDidFinishLaunching消息。
虽然不完全相似,但您可以将其视为Cocoa程序的“ main()”例程。
@Shivam,谢谢。
据我了解appDelegate
,它接近Application
Android中的。的viewDidLoad
,viewDidDisappear
相当于什么Android的生命周期。从启动到呼叫中断到显示通知,每个应用程序都有生命周期。如果您需要代码在system
发生这些事件时做一些特殊的事情,那么您需要编写方法的代码。
在Android中,我们使用onPause
,onDestroy
,onCreate
还挺回调方法来处理这样的系统事件。
onPause
,onCreate
和onDestroy
Android的方法都比较类似viewDidDisappear
,viewDidLoad
在iOS视图控制器生命周期的方法。如果您必须进行比较,我会说Application
Android 的类别更接近AppDelegate
iOS。
希望这会有所帮助...
刚接触这种语言的程序员总是有相同的问题-程序是否从主要方法开始?是的,在这种情况下您是对的;iOS应用程序也从一种主要方法开始。
您的主类调用以下函数:
UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
UIApplicationMain启动了Cocoa Touch运行循环和创建UIApplication
对象的应用程序基础结构。我们的应用程序需要内容,因此Objective-C使用委托来处理此问题。因此,我们将其称为AppDelegate(充当的代表UIApplication
)。我们实现了该委托的一些可选方法,并且它的行为也相应。