您的位置:首页 > 运维架构 > 网站架构

iOS 简单架构及运行流程

2016-03-14 21:01 260 查看
IOS里面几乎所有的可视化类都封装在UIKit.framework里面; 和Mac os系统一样,都是基于Unix内核;

一、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的尺寸要与屏幕大小一致;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios foundation