前注:本文章未完成,但是考虑到目前的iOS版本比起当时我写这个笔记的时候已经有很大变化了,所以很多内容可能不同。
本文地址:https://segmentfault.com/a/11...


核心应用程序

应用程序的生命周期:

用户程序里面包含了一个标准的main()函数,这个函数里面的代码应该是最小程度地使用,要么就不改。
main()函数做的事情有两个:
1、创建自动释放池(autoreleasepool)
2、调用UIApplicationMain()

core_objects_2x.png

应用程序的委托(delegate)

每个应用程序中,必须要有这些delegate方法。参见UIApplicationDelegate文档。
这个delegate对象负责处理几个关键的系统事件,很大程度上,用户程序的入口甚至可以说就是从这些delegate开始的。

事件处理周期

比如一个触摸动作,数据传递过程为:
触摸数据 ——封装于——> UIEvent ——包含——> UITouch

UIApplication对象用一个处理触摸事件的输入原来配置主循环(main runloop)
应用程序 ——派发事件——> UIWindow对象 ——传送事件——> 第一响应者
第一响应者(first responder)是什么?一般就是各种UIApplication、UIWindows、UIView或其派生类。

基本设计模式

iOS开发使用MVC模式,分别是模型 - 视图 - 控制器

  1. 模型:负责数据的维护
  2. 视图:GUI
  3. 控制:上述两者的框架

委托

目标 - 动作:控件将用户预先定义好的“动作”发给“控件”处理

内存模型:引用计数


应用程序运行环境

启动、关闭方式

在iOS中,每次只能有一个前台程序在运行。点击应用程序图标时,程序启动,并应该快速初始化。
点击Home时,iOS通知应用程序推出,此时应该尽快保存需要保存的数据,否则5秒内整个程序可能会被终止(注:现在就不一定了)
设计应用程的时候,要让用户看起来觉得好像程序正在后台运行一样。

应用程序的程序包

一个典型的App程序包(比如命名为SomeApp)的内容为:

  1. SomeApp:可执行文件(必需)
  2. Settings.bundle:配置文件的偏好设置
  3. Icon.png:57x57的主icon
  4. IconSettings.png:29x29的icon,用在setting程序中显示
  5. MainWindow.nib:应用程序的主nib文件
  6. Default.png:480x320,在App启动时作为临时界面显示
  7. iTunesArtwork:512x512的icon,用在使用ad-hoc方式发布的程序中
  8. Info.plist:属性列表
  9. en.lproj:本地化资源

信息属性列表

(待续……)


amc
924 声望223 粉丝

电子和互联网深耕多年,拥有丰富的嵌入式和服务器开发经验。现负责腾讯心悦俱乐部后台开发