IOS程序启动过程

本文详细介绍了iOS应用程序从启动到运行的全过程,包括程序启动时main函数的作用、UIApplicationMain函数的参数及其内部工作原理,以及应用程序如何通过事件循环监听和响应用户事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序启动过程
这里写图片描述
1.打开程序后先执行 SupportingFiels当中的main函数 在mian()函数中执行了一个UIApplicationMain()这个函数

int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

1).UIApplicationMain当中的四个参数
UIApplicationMain(argh,argue,nil,NSStringFromClass([AppDelegate class]);
1)argh:使用main函数argc即可
2)argv:使用main函数argv即可
3)principalClassName:指定应用程序类名 (app 的象征), 该类必须是UIApplication(或子类),如果为nil,则用UIApplication类作为默认值
4)delegateClassName:指定应用程序的代理类,UIApplicationDelegate协议中定义方法,在该类中是实现

3.UIApplicationMain 中执行操作


int main(int argc, char *argv[]) {    @autoreleasepool {
      return UIApplicationMain(argc, argv, @"UIApplication", @"AppDelegate");

      // 1.创建application对象

      // 2.创建application的代理对象

      // 3.把application和application的代理 进行绑定

      // 4.开始事件循环    } }

4.UIApplicationMain函数会:
(1)根据principalClassName创建UIApplication对象
(2)根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性

5.应用程序启动后,会建立应用程序的Main Runloop(事件循环),监听事件并调用注册的方法
(1)首先会在程序完毕后调用delegate对象的application:didFinishLaunchingWithOptions:方法

6.程序正常退出时UIApplicationMain函数才会返回


UIApplicationDelegate的简单介绍

 // 程序第一次加载完成的时候调用
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSLog(@"didFinishLaunchingWithOptions");
    return YES;
}

 // 将要失去焦点 - 不能用户交互
 - (void)applicationWillResignActive:(UIApplication *)application
{
    NSLog(@"applicationWillResignActive");
}

 // 已经获取焦点 - 可以用户交互
 - (void)applicationDidBecomeActive:(UIApplication *)application
{
    NSLog(@"applicationDidBecomeActive");
}

 // 已经进入后台
 - (void)applicationDidEnterBackground:(UIApplication *)application
{
    NSLog(@"applicationDidEnterBackground");
    // 保存数据
}

 // 将要进入前台
 - (void)applicationWillEnterForeground:(UIApplication *)application
{
    NSLog(@"applicationWillEnterForeground");
    // 恢复数据
}

 // 程序挂了!!!
 - (void)applicationWillTerminate:(UIApplication *)application
{
    NSLog(@"applicationWillTerminate");

    // 1.自动挂

    // 2.手动挂
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值