iPhone开发须知说明

移动开发 iOS
本文介绍的是iPhone开发须知说明,主要是介绍iPhone开发过程中不得不知道的几件事,我们先来看内容。

iPhone开发须知说明是本文要介绍的内容,主要是来认识iPhone 开发需要知道的内容,也是我们所说的常识,先来看内容。iOS运行环境的设计目标,快速安全的执行应用程序。

快速启动,短暂使用。一个典型情况是,用户从口袋中拿出设备,只使用几秒钟或者几分钟,然后再次放在口袋里。 这要求:

快速启动应用。

使用后能尽快退出。

特殊的系统行为。

在很多地方,iOS都和mac os x特性和行为一样。但是有些情况和mac os x不同:

虚拟内存系统

管理程序内存,iOS和mac os x拥有相同的特性和行为方式。在iOS下,每个程序仍然拥有自己的虚拟地址空间,但是和mac os x不同的是,它使用虚拟内存受到可用物理内存数量的限制。这是因为iOS不能在内存满了以后把可换出的内存分页写入磁盘。作为替代,当应用程序需要腾出更大内存的时候,虚拟内存系统将释放这些可换出内存。这会删除内存中不再使用的部分,也包括只读内容,比如代码页。这些页面能够经常被重新加载到内存中,当再次需要它们的时候。

如果内存继续受到限制,系统可能向正在运行的应用发送通知,要求它释放额外的内存。应用程序应该响应这个通知,并且释放内存。

自动休眠定时器

自动休眠定时器,是一个iOS试图节约电量的做法。当有一段时间没有收到触摸事件,系统将初始化屏幕并最终关闭屏幕。

虽然大部分情况下这种定时处理是好的,但对于游戏开发者,或者其他不通过触摸的应用开发者来说,需要保持屏幕可用,这需要对UIApplication的idleTimerDisabled设置为YES。

这样的设置会带来大量的用电消耗。在开发中要考虑禁用自动休眠定时器的必要性。

多任务支持

在iOS4和后续版本,可以实现后台执行任务。当用户退出一个应用,进程并不中止,而是被转入后台。在转入后台后很短的时间内,大部分应用将被系统挂起,因此不会运行,也就不会需要附加的电量。另外,需要继续运行的应用可向系统请求执行时间用于运行。

无论是挂起的还是继续运行的后台应用,它们都依然在内存中,这让它们重新启动应用花费更少的时间。不过,如果内存使用紧张,系统可以释放后台应用的内存,供其他应用使用。因此后台应用应在转入后台时持久保存当前状态,以便在下次重启应用的时候恢复状态。

安全

iOS的一个重要任务是确保用户在设备上安全运行应用。iOS通过一些特性来保证这些需求。

应用沙箱

因为安全的原因,iOS限制一个应用只能访问文件系统的唯一位置,包括限制对数据和应用首选项(preference)。这就是沙箱特性。沙箱是一组细粒度的控制限制集合,包括对文件、首选项、网络资源、硬件等等的访问。

文件保护

iOS及以后版本,应用可以使用文件保护来加密文件,确保当用户设备锁定时文件不可访问。

keychain data

Keychain Data是一个容器,用于加密和安全的处理密码和其他保密的信息。keychain data是存储于应用沙箱之外的。如果一个应用删除了,那么keychain data也将自动删除。当用户通过iTunes备份应用数据的时候,keychain data也会备份。然而,该数据只能恢复到备份它的设备上。对应用的升级不会影响keychain data。

文件系统

一些重要的应用目录,为了安全的缘故,一个应用只能拥有一些目录,用来写入应用的数据或者首选项参数。当一个应用安装到系统,会创建该应用的home目录。以下列出一些home目录下的主要的子目录:

 < Application_Home>/AppName.app:存放应用程序自身

 < Application_Home>/Documents/:存放用户文档和应用数据文件

 < Application_Home>/Library/:应用程序规范的顶级目录,下面有一些规范定义的的子目录,当然也可以自定义子目录,用于存放应用的文件,但是不宜存放用户数据文件

 < Application_Home>/Library/Preferences,这里存放程序规范要求的首选项文件

 < Application_Home>/Library/Caches,保存应用的持久化数据,用于应用升级或者应用关闭后的数据保存

 < Application_Home>/tmp/,保存应用数据,但不需要持久化的,在应用关闭后,该目录下的数据将删除

大小写敏感文件系统

iOS文件系统对大小写敏感的。

通过用户桌面电脑共享文件

文件共享可以在应用和用户桌面电脑之间共享文件。但是不允许同一个设备中的不通应用之间共享文件。如果要在应用之间共享数据,需要使用剪切板或者文档交互控制器对象(document interaction controller object)。

备份和恢复

iTunes应用可在适当情况下自动处理备份和恢复。然后,应用需要知道备份和恢复的文件放在哪里。

什么是备份

你不必为你的应用备份和恢复做任何准备。在iOS

以后,当设备连接到电脑并开始同步后,iTunes会自动增量备份所有文件,但不包括下面的目录:

  1. Application_Home>/AppName.app  
  2. Application_Home>/Library/Caches  
  3. Application_Home>/tmp 

虽然iTunes备份应用自身,但不是每次同步都这样做。从app store上购买的应用,只在随后的同步过程中被iTunes备份。再之后,iTunes并不在同步操作中备份应用,除非应用自身发生变化,比如应用的升级。

为了避免同步过程时间过长,你需要对应用中使用的文件放在哪里做出选择。< Application_Home>/Documents目录用来存放用户文档和应用数据文件。临时文件要保存在Application Home/tmp目录下,这样可以在不需要时删除。如果在两次启动中都需要的数据文件,但是不需要备份的,可放置在Application Home/Library/Caches。比如很大的数据文件,尽量放置在Caches目录下,而不是Documents目录下,Documents目录下文件将做备份,这样会很耗时。

应用更新期间的文件保存

如果文件需要在应用更新后依然存在,需要放置在:

  1. Application_Home>/Documents  
  2. Application_Home>/Library 

模拟器

模拟器提供了一个运行环境,和真机的环境很接近,但是并不完全一样:

模拟器没有真机上的一些限制,比如内存(真机没有内存分页保存到硬盘的特性)

有些技术的行为并不一样,比如OpenGL ES

判断可用的硬件支持

有一些硬件特性,不是所有iOS设备都带的,比如GPS或者照相机。如果你的应用需要这样的特性,需要在用户购买前提醒。如果你使用这样的硬件特性是可选的,那么需要在使用前检查硬件特性是否可用。

如果应用必须使用硬件特性,那么在Info.plist文件中的UIRequiredDeviceCapabilities条目中做设置。这也可以防止没有该硬件特性的用户安装应用到设备上。

可通过iOS判断如下硬件特性的支持情况:

多任务支持

屏幕是iPad还是iPhone尺寸

是否有额外的屏幕加入

硬件磁盘加密特性是否可用

网络是否可用

设备是否可捕获视频

语音输入(麦克风)是否可用

GPS设备当前是否可用

指定的硬件访问是否可用

当前的电池水平

proximity传感器是否可用(是哪个面部靠近识别传感器吧?)

小结:iPhone开发须知说明的内容介绍完了,通过本文文章介绍iPhone的开发,是不是多多少少明白了点,最后希望本文对你有所帮助!

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

2011-07-18 15:52:50

iPhone 静态库

2009-07-02 13:33:12

JSP技术

2011-07-06 17:53:40

iPhone SDK Xcode

2015-07-20 09:16:42

iOSWatchKit开发

2011-07-25 18:02:51

iPhone LibFetion 移植

2011-06-16 16:52:21

MeeGo 开发

2011-07-06 17:34:47

iPhone

2011-08-10 15:48:10

iPhone网络

2015-02-28 15:40:38

iPhoneiPadiOS8安全设置

2010-04-12 14:58:56

Meego开发

2011-07-19 09:58:36

2011-07-08 16:02:24

iphone

2011-07-19 09:46:38

2011-07-08 14:58:16

iPhone Xcode iOS

2011-08-12 09:52:35

iPhone开发TableviewUITextField

2011-08-10 18:24:22

iPhone 图形 绘图

2012-12-24 14:48:14

ios

2011-08-10 15:58:58

iPhone视频

2011-08-22 14:31:53

iPhone开发

2011-08-01 18:27:58

iPhone开发 UISearchBa
点赞
收藏

51CTO技术栈公众号