ios 启动运行简述

作者: 死不了的猫 | 来源:发表于2016-07-30 22:53 被阅读75次

    觉得应该从头梳理一下

    ios 作为一个移动操作系统,担负着管理手机资源的任务,不管是文件系统,还是进程调度,还是内存调度,都是因为有了 ios 对底层硬件的管理,才有了上层应用程序的顺利执行.....

    作为一款操作系统,肯定和pc平台的操作系统在原理上没有什么异同,都是加电复位寄存器(ip)地址,指向将要进行加载的第一行程序,在 cpu 的顺序执行下加载操作系统,然后常驻系统监听,对打开的应用程序进行管理

    我们按下应用程序的那一刻 : 到使用起来,这之间又发生了什么呢?


    众所周知,应用程序只有在内存中执行才算是真正的进程......
    当我们按下应用程序图标后.操作系统检测到这个事件,然后通过事件传递处理到这个图标,内存开始加载资源, 保存数据,IP指针指到将要运行的代码快处,进入用户态模式,开始执行代码..也就是我们写的源文件编译过后的二进制.......

    这里就要看官方文档了

    The Main Function

    The entry point for every C-based app is the main function and iOS apps are no different. What is different is that for iOS apps you do not write the main function yourself. Instead, Xcode creates this function as part of your basic project. Listing 2-1 shows an example of this function. With few exceptions, you should never change the implementation of the main function that Xcode provides.

    翻译:正如每个基于c的app一样,ios的app进入点都是一个 main 函数,不同之处在于你不需要手动书写这个主函数,xcode 会自动创建,也最好不要随便改动 代码如下:

    #import <UIKit/UIKit.h>
    #import "AppDelegate.h"
    
    int main(int argc, char * argv[])
    {
        @autoreleasepool {
            return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        }
    }
    

    The main function of an iOS app
    The only thing to mention about the main function is that its job is to hand control off to the UIKit framework. The UIApplicationMain function handles this process by creating the core objects of your app, loading your app’s user interface from the available storyboard files, calling your custom code so that you have a chance to do some initial setup, and putting the app’s run loop in motion. The only pieces that you have to provide are the storyboard files and the custom initialization code.

    上面解释了主函数的作用

    • 创造核心对象
    • 控制 uikit 层
    • 加载 storyboard 加载初始化代码
    • 加载 runloop 监听

    现在应用程序已经有了,但是还没有任何可以显示的东西...

    • 如果有 storyboard 且 info.plist 配置正确的话,系统会自动创建uiwindow,作为 appdelegate的一个属性,自动加载 storyboard 中箭头指向的的控 制器,作为uiwindow 的根控制器,加载视图显示.......(自动做了没有的步骤而已)
    • 如果没有的话, 就要自己在程序方法中设置
      • 程序启动完毕的时候, 就会调用代理的application:didFinishLaunchingWithOptions:方法

      • 在application:didFinishLaunchingWithOptions:中创建UIWindow

      • 创建和设置UIWindow的rootViewController

      • 显示窗口

    之后事件循环监听,就如图二一样,开始使用......(未完)

    参考:the app life cycle.

    相关文章

      网友评论

        本文标题:ios 启动运行简述

        本文链接:https://www.haomeiwen.com/subject/sfytsttx.html