iOS_概述和程序的执行顺序

  • 一iOS概述
    • UI设计的条件设置
    • iOS系统架构层次
  • 二程序的执行顺序

一、iOS概述

iOS(最初,苹果公司并没有给随iPhone发行的iOS一个独立的称谓,直到2008年3月6日才给它取名为iPhone OS,并于2010年6月改名为现在的名字iOS)是由苹果公司为移动设备所开发的操作系统,支持的设备包括iPhone、iPod touch、iPad及Apple TV等。与Android及Windows Phone不同,iOS不支持非苹果的硬件设备。2007年1月9日苹果在Macworld大会中发布了iOS,并于同年6月29日发布了iOS的第一个版本。目前,iOS的最新版本为8.4(于2015年6月30日发布)。

UI设计的条件设置

尽管Apple为我们提供了诸多控件让我们来布局应用,但并不是没有任何原则,我们需要合理安排控件,做到用户体验最佳,以下是UI设计的条件限制:

  1. 显示面积。尽可能少而紧凑的界面元素、足够大的交互控件。
  2. 文件大小。有限的存储空间,下载的时间以及流量费用,资源加载速度。
  3. 内存空间。程序运行空间小,内存管理优化,避免过高质量的图片和音频。
  4. 程序运行限制。一次只有一个前台程序,程序退出时间不得超过5秒。
  5. 数据访问。不能使用别的APP中的静态类库,不能访问沙盒以外的任何文件,也不能把沙盒文件共享出去。可以通过特定的API访问一些系统资源,如图片库、地址簿等,在有网络链接时,可以访问网络资源。
  6. 能量消耗。CPU负载、发热、电池消耗快、算法优化。
  7. 用户使用习惯。快速启动、短暂使用,随时可能退出,避免多余的帮助,自动保存。

iOS系统架构层次

iOS基于Mac OS X同样的内核,iOS APP由如下图所示的OS技术层次支撑起来。

触控应用层(the Cocoa Touch layer)
媒体层(the Media layer)
核心服务层(the Core Services layer)
核心操作系统层(the Core OS layer)

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

在进行APP开发时,应当从上至下地使用这些技术层次,Cocoa Touch层为你提供了基本的系统行为支持,而且将你的工作量降到最低,当你想要实现更为复杂的行为和界面时,才考虑向下层探寻技术支持。


二、程序的执行顺序

1.main.m是程序的⼊口。任何一个程序,⽆论是基于Mac OS X还是iOS,程序都是从main.m文件的main函数开始执⾏的。main函数只做三件事:创建一个自动释放池,调用UIApplicationMain函数,以及使用自动释放池。

int main(int argc, char * argv[]) {
    @autoreleasepool {
        // 执行UIApplicationMain函数时做了跳转,转到了AppDelete中
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

2.UIApplicationMain()创建应用程序对象,并且为此对象指定委托,监测程序的执行,同时开启事件循环,处理程序接收到的事件。

3.UIApplicationDelegate方法的执行。应⽤程序代理,主要检测应用程序的状态并做出相应的处理。应用程序的状态有很多,比如:程序启动、进入活跃状态、进到后台、内存警告、收到远程消息等。任何接受了UIApplicationDelegate协议的对象都可以成为应用程序代理。一旦应⽤程序的某种状态触发,就会执行相应的代理⽅法。UIApplicationDelegate是一个objective-C的协议。⾥面声明了很多方法,这些方法都与应用程序运行状态有关,它们由应用程序代理实现。UIApplication对象负责调⽤。

4.加载window。UIWindow作为应用程序的窗口,在应用程序启动的时候就要加载。各种UI界面都是借助window来呈现的。UIWindow在创建的时候,应该和屏幕⼀样大。通过[UIScreen mainScreen].bounds可以获得屏幕⼤小。[self.window makeKeyAndVisible]; //让window变为可视状态,即显⽰window

5.指定根视图控制器。


你可能感兴趣的:(iOS)