iOS 简单架构及运行流程
2016-03-14 21:01
260 查看
IOS里面几乎所有的可视化类都封装在UIKit.framework里面; 和Mac os系统一样,都是基于Unix内核;
主要包含了大部分使用Objective-C的API,主要由Foundation和UIKit框架组成,Foundation提供了面向对象的文件访问,网络操作,数据,和集合类型;
Media层
Media层主要提供了一些基本的绘图、声音和视频的技术支持,也包含绘图用的Quartz、Core Audio、以及Core Animation;
Core Services层
Core OS层
Core Services层和Core OS层主要提供了一些底层的支持。包括文件访问、网络协议、低级数据类型等;它们是C基础的接口,包括Core Foundation、CFNetwork、Sqlite等API;
App包的组成部分
MyApp(可执行文件)
Icon.png(App图标文件)
MainWindow.nib(主窗口xib文件)
Default.png(加载时图片)
iTunesArtwork(iTunes图片)
Info.plist(配置文件)
Resource files(资源文件)
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指定一个代理委托(监控程序的运行,终止,进入前台,后台等过程);然后开启一个事件循环,处理程序接收到的事件;
2.UIApplicationDelegate方法的执行;
3.加载window;
大致分为几类:程序启动、活跃/非活跃、前/后台切换、推送通知、内存警告;
UIView负责渲染矩形区域的内容,响应区域中的触摸事件,以及为矩形区域添加动画,视图更多的时候用于管理一个或者多个视图;如果父视图位置发生改变,子视图也会和父视图一样发生等距离位置改变,同理透明度也是一样的;
UIWindow是IOS中的窗口类,它是UIView的子类,主要负责管理和协调各个视图在设备屏幕上的展现,一个应用程序最好只有一个window;window需要在app启动的时候进行加载,window的尺寸要与屏幕大小一致;
一、iOS系统框架
Cocoa Touch层主要包含了大部分使用Objective-C的API,主要由Foundation和UIKit框架组成,Foundation提供了面向对象的文件访问,网络操作,数据,和集合类型;
Media层
Media层主要提供了一些基本的绘图、声音和视频的技术支持,也包含绘图用的Quartz、Core Audio、以及Core Animation;
Core Services层
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的尺寸要与屏幕大小一致;
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- iOS推送的那些事
- IOS 改变键盘颜色代码