http://iammr.7.blog.163.com/blog/static/49102699200931794317487/
基于XCode开发的Iphone APP程序结构
挨踢咋活 2009-04-17 09:43:17 阅读679 评论0 字号:大中小
以下分析是基于Xcode进行iphone开发的代码。通过Xcode IDE在设计时可以自动做很多事;但是这些事意义何在,怎么将整个APP贯穿起来。分析了解之后,就可以知道应用程序大致结构,运作机制。基于此,以后也就只需了解特定的控件或功能库的使用了。
Ø IPhone程序的结构
所有的iphone程序,都是桌面视窗程序;在可见性方面看,所见的一切都是窗口,因为它们都继承于共同的基类UIControl:
n 每个Iphone程序都有一个主窗口;
n 而每个显示的子视窗也是窗口;
n 每个控件也都是子窗口
以通用的单视窗程序和多视窗程序举例而言:
l 对于单视图程序而言,就是主窗口内部包含子视窗;
l 对于多视窗程序而言,
n 就是主视图包含一个特殊的子视窗:多视窗控制器。
n 而多视窗控制器则包含每个子视窗
因此,可以说,窗口之间存在父子包含关系:
n 一个主窗口仅且只能包含一个子视窗
l 该子视窗可以是一个具体的子视窗;这就是单视窗程序
l 该子视窗是一个多视窗控制器;这就是多视窗程序
n 一个子视窗可能包含着多个控件,这些控件也都是子窗口
n 多视窗控制器也是一个子视窗;它的作用是将子视窗当作其一个个控件来管理
理解如上逻辑组织结构,就可以看看在物理上是如何通过文件来表现的。
Ø IPhone程序的物理组织
子视窗
每个子视窗由两部分组成:资源文件和控制文件。分别介绍如下:
| 资源文件 | 控制文件 | 说明 |
物理文件 | Helloview.xlb | Helloview.h Helloview.m | Xlb在Xcode中打开就是界面 |
作用 | 界面设计 运行时界面显示 | 消息控制映射 控件对象映射 | 如何在Interface Builder中实现映射操作: l 先在实现类中添加绑定后的结果名 l 然后拖动对象或对象的方法到View显示栏 l 最后选择对应的名称 可见操作起来是很麻烦,完全不如MFC中的自动一步到位;而且每类控件对应的类型也不能自动提示出来 |
MVC层次 | V – 视图层 | C – 控制层 |
|
MFC比较 | 资源文件 rc | 映射类 | 与MFC区别在于: l Xlb中既包括资源信息,也包括控件和成员对象映射信息 l 而MFC中将控件和成员映射信息放在了对应类中 |
|
|
|
|
可以看出子视窗的两个作用:界面和控制;控制负责管理子窗口控件对象及其消息。
主窗口
主窗口的作用也是两个:界面和控制。
n 界面还是通过xlb资源文件来实现;只不过该界面很简单,只是负责放哪个子视窗。该文件名固定是MainWindow.xlb
n 控制则没有单独的控制文件。因为其作用很简单,只是负责放哪个子视窗,所以完全通过UIApp的接口来实现即可。也就是一个APP的代理类。代理类的文件名就是“projectname” AppDelegate.
应用程序
每个应用程序还有些别的固定文件:
n main.m 应用程序起始文件
n Info.plist 应用程序的一些配置信息:例如图标等。
了解了如上文件组织结构,分析一个例子则可以很快知道大致框架;各个功能各依存于何处。也可以了解一些Xcode交互幕后生成代码的意义。
Ø IPhone程序的生命周期
多视窗程序就是出现多个子视窗;而多视窗控制器就是Iphone提供的有限几个。
Ø Iphone开发的参考体系
界面布局控件
主要是特殊的控件、特殊的事件响应
持久层
应用程序在Iphone中的部署以及访问局限性