所有的iPhone应用程序都是基于UIKit框架构建而成的,因此,它们在本质上 具有相同的核心架构。UIKit负责提供运行应用程序和协调用户输入及屏幕显示 所需要的关键对象。应用程序之间不同的地方在于如何配置缺省对象,以及如 何通过定制对象来添加用户界面和行为。
大家来看个图
// If nil is specified for principalClassName, the value for NSPrincipalClass from the Info.plist is used. If there is no
// NSPrincipalClass key specified, the UIApplication class is used. The delegate class will be instantiated using init.
UIKIT_EXTERN int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
UIApplicationMain 的官方文档 基本上main函数可以不要改.
然后appdelegate里调- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 开始用户写的代码.
而Event Loop 则一直在监听 看有没有 handle event 这就是为什么,当你向某个UI组件发送什么消息,或者按了一下就会响应什么事件了.
在appdelegate里当程序结束时响应 - (void)applicationWillTerminate:(UIApplication *)application
UIKit 得知程序要结束了,于是 aplication execution terminates
而程序进入后台时响应 applicationDidEnterBackground: ios4 之后才有. 不是真正的后台,进程会暂停.