iOS 简单架构及运行流程

本文详细介绍了iOS应用的架构,包括系统框架、应用程序包组成、程序执行流程等,并深入解析了UIApplication、UIApplicationDelegate方法、UIView和UIWindow等核心组件的功能与作用。

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

IOS里面几乎所有的可视化类都封装在UIKit.framework里面; 和Mac os系统一样,都是基于Unix内核;

一、iOS系统框架

  1. Cocoa Touch层
    主要包含了大部分使用Objective-C的API,主要由Foundation和UIKit框架组成,Foundation提供了面向对象的文件访问,网络操作,数据,和集合类型;
  2. Media层
    Media层主要提供了一些基本的绘图、声音和视频的技术支持,也包含绘图用的Quartz、Core Audio、以及Core Animation;
  3. Core Services层
  4. Core OS层
    Core Services层和Core OS层主要提供了一些底层的支持。包括文件访问、网络协议、低级数据类型等;它们是C基础的接口,包括Core Foundation、CFNetwork、Sqlite等API;

二、ApplicationBundle(应用程序包)

应用程序在编译的时候,会生成一个app包,app包是文件系统中的一个目录,把app中相关的文件集中在一起;app包主要包括应用程序的可执行文件和app所需要的资源文件等;
App包的组成部分

  • MyApp(可执行文件)
  • Icon.png(App图标文件)
  • MainWindow.nib(主窗口xib文件)
  • Default.png(加载时图片)
  • iTunesArtwork(iTunes图片)
  • Info.plist(配置文件)
  • Resource files(资源文件)

三、程序执行流程及项目清单文件

  • main.m 程序的入口
  • xxx-Prefix.pch 预编译文件,程序编译的时候会自动为我们导入UIKit等framework,所以在我们的程序中并没有手动引入UIKit的头文件
  • xxx-Info.plist 程序配置文件
  • InfoPlist.string 国际化文件
  • MyProject.app 最终的app
  • framework 程序用到的框架

1.程序执行顺序
(1).UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
上面的代码首先创建了一个UIApplication对象(每个应用程序都是一个UIApplication的实例);并且为UIApplication指定一个代理委托(监控程序的运行,终止,进入前台,后台等过程);然后开启一个事件循环,处理程序接收到的事件;

后两个参数分别是应用程序类名(必须是UIApplication或者其子类)和应用程序代理对象类名(需要遵守UIApplicationDelegate协议);

2.UIApplicationDelegate方法的执行;
3.加载window;

四、UIApplication

每一个应用程序都是UIApplication或者其子类的实例,主要用于处理用户事件,以及负责window的显示,通常会给应用程序指定一个委托来监测程序的运行;UIApplicationDelegate是一个协议,定义了监测程序执行的方法,这些方法都有自己的触发条件;
大致分为几类:程序启动、活跃/非活跃、前/后台切换、推送通知、内存警告;

didFinishLaunchingWithOptions // 程序启动完毕,系统自动调用
applicationDidBecomeActive // 程序变为活动状态(能够和用户交互)
applicationWillResignActive // 程序将要推动活动状态(失去焦点,不可交互)
applicationDidEnterBackground // 程序进入后台(比如按了home键),需要在此方法中保存应用程序数据及状态
applicationWillEnterForeground // 程序将要进入前台,需要在此方法中还原程序状态
applicationDidReceiveMemoryWarning // app接收到内存警告,需要在该方法中释放不需要在内存
applicationWillTerminate // 程序退出(通常不会执行,如果想要执行此方法,需要在plist文件中配置Application does not run in background 为YES),如果应用程序处于挂起状态时无法调用此方法

五、UIView(视图)及UIWindow(窗口)

真正负责将界面展现给用户的其实是UIView及UIWindow,UIView表示屏幕上的一块矩形区域,几乎所有的屏幕上能看到的元素都是UIView或者其子类;
UIView负责渲染矩形区域的内容,响应区域中的触摸事件,以及为矩形区域添加动画,视图更多的时候用于管理一个或者多个视图;如果父视图位置发生改变,子视图也会和父视图一样发生等距离位置改变,同理透明度也是一样的;
UIWindow是IOS中的窗口类,它是UIView的子类,主要负责管理和协调各个视图在设备屏幕上的展现,一个应用程序最好只有一个window;window需要在app启动的时候进行加载,window的尺寸要与屏幕大小一致;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值