详解iPhone应用程序事件处理及程序包结构

移动开发 iOS
本文介绍的是iPhone应用程序事件处理及程序包结构,详细的介绍了iphone应用中的事件处理等一些内容,先来看详细内容。

iPhone应用程序事件处理及程序包结构是本文介绍的内容,主要介绍了详细讲解了 事件处理循环和iPhone程序包结构,先来详细讲解。

事件处理循环

UIApplicationMain处理完程序初始化以后,他会开启时间出来循环和屏幕绘制循环。过程如下图:

事件处理循环

当用户与iPhone设备交互时,iPhoneOS会检测触摸事件并把它放到事件队列中。负责事件处理的UIApplication对象每次从队列顶部取出事件,并把它传递给最适合处理它的对象。例如在按钮上的点击事件会被传递给相应的按钮对象。时间也可以被传递给控制器或其他并非直接处理改事件的其他对象。

在iPhoneOS的Multi-Touch事件模型中,触摸数据被封装到单独的事件对象中(UIEvent).为了跟踪某个触摸,事件对象包含若干个触摸对象(UITouch),每一个触摸对象代表一个手指在屏幕上的触摸。当用户将手指放到屏幕上,移动手指最终离开屏幕,系统会将每一个手指的变动提交给相应的触摸对象。
   
当启动一个程序时,系统会为程序创建一个过程和一个单独的线程。这个初始线程会变成程序的主线程。UIApplication就在此启动主循环并配置程序的事件处理代码。下图展示了事件处理代码和主线程之间的关系,如图:

事件处理循环

触摸事件被系统加入到队列末尾,直到它被程序的主循环处理。

iPhone程序包结构

当build iPhone程序时,Xcode会将它打成一个包。这个包是文件系统下的一个目录用于将相关资源放到一起。一个iPhone程序包包括可执行程序和程序使用的各种资源(例如程序图标、其他图片和本地化资源等)。下面我们逐个看一下iPhone程序包里到底有什么?

MyApp

盛放程序代码的可执行文件。此文件的名称与工程的名称相同。这个文件是必须的。

Settings.bundle

Settings.bundle是一个像设置程序(Settings Application)添加设置选项的一组文件包。这个文件包中包含有属性列表和其他用于设置和现实属性的资源。

Icon.png

Icon.png是一张57*57的png图片,用于在iPhone的主界面上作为程序图标代表你的程序。这张图片不需要有其他附加特效,系统会自动添加这些效果。此文件是必须的。

Icon-Setting.png

Icon-Setting.png是一张29*29的png图片,用于在设置程序中作为图标代表你的程序。如果你的程序有Settings.bundle,这个图标将会显示在程序名的旁边。如果你没有设置这张图片,系统会将Icon.png缩放来代替。

MainWindow.nib

MainWindow.nib保存在程序启动时需要加载的默认的界面对象。一般来说,MainWindow.nib保存着程序主窗口对象和程序的代理对象的实例。其他界面对象要么从别的.nib文件载入,要么通过代码编程实现。

Default.png

Default.png是一张480*320的png图片用于在程序启动时显示。启动时,系统会用这张图片作为临时背景,直到程序载入了他的窗口和用户界面。

iTunesArtwork

这是一个512*512的图标用于那些用ad-hoc方式发售的程序。一般来说,这个图标由App Store提供;因为通过ad-hoc方式分销的软件不通过App Store,但它必须在程序保重显示。iTunes用这个图标来显示你的软件。(这张图片必须与提交给App Store的图片(jpg或png格式)相同。文件名必须为iTunesArtwork,并且不能有后缀。)

Info.plist

Info.plist是程序的信息属性列表。这个文件用键-值的形式定义了程序的属性,例如Bundle ID、版本号、显示名称等。

其他资源文件

非本地化资源放在包的最上层。程序可以任意使用非本地化资源,不管用户选择的语言。

*.lproj语言目录

本地化资源被放到一个以ISO639-1语言所写,以.lproj为后缀的目录中(例如en.proj, fr.proj保存着与英语和法语相关的本地化资源)。

小结:详解iPhone应用程序事件处理及程序包结构的内容介绍完了,希望通过本文的学习能对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-07-26 09:41:23

iPhone xcode Mac OS X

2011-07-19 14:36:32

iPhone

2011-08-05 13:49:53

iPhone 应用 开发

2011-07-21 10:47:37

iPhone Cocoa 委托

2011-07-28 13:59:40

iPhone App

2011-07-26 16:33:56

iPhone Delegate

2011-08-10 16:50:10

iPhone生命周期

2011-08-03 17:08:43

iPhone Sqlite 时间

2011-07-26 11:13:15

iPhone PXL

2009-07-17 10:42:06

Swing应用程序处理函数

2011-07-26 10:09:08

iPhone 多语言 国际化

2011-07-29 14:08:26

iPhone UTF-8 XML

2010-08-27 10:41:41

iPhone核心应用程序

2011-07-20 15:58:58

iPhone 应用程序 生命周期

2011-07-27 17:30:40

iPhone Locate 定位

2011-08-12 14:54:45

iPhone委托

2011-07-21 15:56:32

iPhone 截屏

2020-04-24 19:02:19

应用程序人工智能AI

2009-08-14 18:00:22

C#Windows应用

2009-07-23 13:26:21

点赞
收藏

51CTO技术栈公众号