from: http://blog.csdn.net/shallon_luo/article/details/6183984

1. IOS应用或者说移动设备上的应用的最大的特征是:Fast Launch, Short Use。移动用户路上、机场候机中、地铁中等场合使用,每次用户使用移动设备的时间大多是非常短,需要应用能够快速启动。在IOS 4多任务的环境下,用户在同一时间只和当前的应用交互,其他应用被运行在系统的后端环境亦即内存中,直到用户切换环境唤起或者用户/系统将其从内存中彻底移出。显然,内存中存活的IOS应用从后端切换到前端的速度要比IOS应用启动的速度快得多,然而需要指出的是,由于内存的限制,系统有可能可能将最近不使用的应用从内存中清除,由于该清除动作可能发生在任何时间并无没有任何提示,IOS应用应当在切换到后台的时候将用户当前的用户数据和状态保存起来,以至在下次唤醒应用中,能够恢复应用的状态。

2. 内存管理,IOS的内存管理使用的是和Mac OS X一样的机制,在IOS应用中,每个应用具有独立的虚拟地址空间,但是和Mac OS X不同的是,虚拟地址空间受到物理内存大小的限制。该限制是因为IOS的内存耗尽的时候并不采用将内存映射到磁盘空间的机制。虚存管理系统此时只是要求释放只读的内存页,比如说,代码页。被释放的内存页当被需要的时候将重新载入内存。

当内存空间受限时,系统将通知所有的应用,要求应用释放暂时不用的内存。应用应该响应该消息,释放部分内存,缓解内存的压力。请参见http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Performance/Performance.html#//apple_ref/doc/uid/TP40007072-CH8-SW6

3.自动休眠时钟,为了省电的原因,当IOS系统检测到最近没有手势事件触发的时候,会开始将设备的屏幕亮度调底,如果还无手势事件触发,系统将彻底关闭屏幕的电源。如果开发者开发一个IOS应用,长时间不依赖于手势事件,例如,例如利用重力感应器的游戏或者是视频类应用,可能需要关闭该自动休眠时钟,当然,出于省电考虑,应用应当尽量尽量不使用和少用该功能。如何在IOS应用中如何能够省电?该问题在后续的资料笔记中有,这里不再赘述。

4.IOS的SAND BOX执行环境。

基于安全的理由,IOS的应用被限制文件系统的一个唯一目录(应用的home目录)下执行,所谓的SNADBOX是一系列细粒度的限制,限制IOS访问文件系统、网络资源、硬件资源等系统资源,每个IOS的应用能访问自己的SANDBOX定义的资源,不能访问其他IOS应用定义的资源。

5.应用的home目录的子目录结构介绍

5.1 <Application_Home>/AppName.app
    
该目录包含应用的本身,在应用安装的时候目录内容会被签名,该目录如果修改,将不能再次启动。在IOS 2.1及其后续的版本,此目录内容不会被iTunes所备份,但是,iTurnes 会将用户购买的所有App Store中的应用同步到设备中。

5.2<Application_Home>/Documents/
    
该目录用于存放用户的文档和应用的数据文件,其内容能被iTunes备份。用户想在应用之外读取这个目录的内容可以通过文件共享,不过这种读取不是指让其他应用能够访问本应用的Document目录,而是用户的桌面电脑通过iTunes能访问本应用的Document目录,下面是对这个功能的原文描述:Applications that want to make user data files accessible can do so using application file sharing. File sharing enables the sharing of files between your application and the user’s desktop computer only. It does not allow your application to share files with other applications on the same device. To share data between applications, use the pasteboard. To share files between applications, use a document interaction controller object.

5.3 <Application_Home>/Library/
该目录用以存放应用的非用户数据,该目录下通常包含Preferences、Caches、tmp等固定含义的标准目录,当然用户也可以自创建目录。该目录除了Cache、tmp目录外,其他部分将被iTunes备份。只要开发者具有非用户数据,又希望被iTunes备份,可以放在该目录下。

5.4 <Application_Home>/Library/Preferences
    
此目录用于存放应用指定的配置选择文件,开发者应该通过NSUserDefaults class or CFPreferences API对此类文件进行存取,而不应该直接操作该目录下的文件。此目录的内容将被iTunes 备份。

5.5 <Application_Home>/Library/Caches
    
此目录用于存放重启动过程中需要读取的临时状态文件(为了恢复到上次运行时的状态,特别是在多任务应用从后台被唤醒到前端的场合),或者软件升级过程中需要临时保存的文件。应用负责创建和删除此类文件,并且由于此类文件可能会被iTunes在对系统进行“全恢复”操作时删除,应用如果发现该目录下的文件不存在应该能自动重建。

自从iOS 2.2 及后续的版本,此目录的内容不被 iTunes备份。

5.6 <Application_Home>/tmp/

非Cache类型的临时目录,应用必须负责删除该目录下的文件,当系统发现该应用不再运行时,也会清除未目录下的文件。

自从iOS 2.1 以及后续版本, 此目录的内容不被 iTunes备份。

6.文件保护

自从IOS 4及其后续版本,应用可以使用文件加密保护的功能,具体说来,当设备被锁住的时候,加密文件将不能被访问。文件保护利用特定型号的设备( iPhone 3GS and iPhone 4)的硬件提供的加密功能为用户的蜜柑数据添加多一层的保护。文件保存在存储中一直处在加密后的状态,当设备被锁住的时候,即便是拥有该文件的应用也不能读取该加密文件,用户需要显式的解锁设备(输入解锁的密码)后,文件才能被访问。(文章没有提到IOS 上文件系统的类型是什么)

设备上的文件系统必须在格式化指定支持文件保护,对于现有的设备,如果需要使用文件保护功能,用户必须重新格式化设备,以及从备份中将以前的数据恢复到设备上。

用户必须设置保护的密码

应用必须指定那个文件需要保护,具体做法参见http://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StandardBehaviors/StandardBehaviors.html#//apple_ref/doc/uid/TP40007072-CH4-SW4

应用必须逐个文件的指定哪些文件需要保护,一旦触发了文件保护就不能回退。应用还必须处理某些文件应该被保护但是没有被设置的情况,这个可能是用户从前一个版本的IOS备份而来的文件,在该版本中,文件保护尚未被启用。

7. KEYCHAIN DATA

KEYCHAIN是一种安全的加密的容器用以存放密码和其他验证凭证。KEYCHAIN的数据存放在应用的SandBox外面(SandBox的定义请看前面)。在IOS 4.0以前的版本,KEYCHAIN的数据只能在原备份的设备上恢复。在IOS4.0以及后续设备,当一个KeyChain的数据项可以备份到不同的设备上。请参见 “Keychain Services Concepts” in Keychain Services Programming Guide。

IOS 应用运行环境理解相关推荐

  1. 理解WebKit和Chromium: Web应用和Web运行环境

    转载请注明原文地址:http://blog.csdn.net/milado_nju 注:鉴于这一领域非常热,自己也投身其中,会单独开辟一个专题介绍Web应用和Web运行环境. ## 概述 Web已经从 ...

  2. iOS 从实际出发理解多线程

    前言 多线程很多开发者多多少少相信也都有了解,以前有些东西理解的不是很透,慢慢的积累之后,这方面的东西也需要自己好好的总结一下.多线程从我刚接触到iOS的时候就知道这玩意挺重要的,但那时也是能力有限, ...

  3. js微信监听返回_微信小程序(2)- 框架结构amp;运行环境

    一.小程序框架结构 小程序框架分场景获取.逻辑层和视图层 场景获取:场景值是用来描述用户进入小程序的路径,可以在小程序的生命周期onLaunch 或 onShow 里获取.也可以通过wx.getLau ...

  4. iOS 开发:彻底理解 iOS 内存管理(MRC 篇)

    本文首发于我的个人博客:「程序员充电站」 文章链接:「传送门」 本文更新时间:2021年08月17日17:11:59 本文是 「iOS 开发:彻底理解 iOS 内存管理」系列的「MRC 篇」. 用来对 ...

  5. 滴滴开源AoE:一种快速集成AI的终端运行环境SDK

    作者:石臻臻, CSDN博客之星Top5.Kafka Contributor .nacos Contributor.华为云 MVP ,腾讯云TVP, 滴滴Kafka技术专家 . LogiKM PMC( ...

  6. Windows Azure Platform Introduction (6) Windows Azure应用程序运行环境

    <Windows Azure Platform 系列文章目录> Windows Azure应用程序运行环境 Windows Azure云计算平台是提供PaaS(平台即服务)和IaaS(基础 ...

  7. Sublime配置C和C++编译运行环境

    Sublime配置C和C++编译运行环境 最近在学习<深入理解计算机系统>,里面的代码是在Linux环境下的C语言编写,由于采用gcc编译环境,为方便本人学习,特在Windows环境下载了 ...

  8. 如何让服务器运行js,服务器端JavaScript运行环境Node.js的依赖性管理

    众所周知,Node.js是一个基于Chrome V8引擎的服务器端JavaScript运行环境.它采用了一种事件驱动的.非阻塞式的I/O模式,运行起来既轻量级又高效.诚然,我们可以使用单个js文件,来 ...

  9. Mac OS X下配置Cocos2d-x for Android(Eclipse)IOS(Xcode)开发环境

    前面一段时间只用Cocos2d-x在IOS平台下开发, 学习Cocos2d-x不就是为了他的跨平台特性么? 所以必须也要掌握在Android下的开发, 才能引爆Cocos2d-x的跨平台特性, 发挥其 ...

最新文章

  1. 服务器技术综述(四)
  2. 【其他】将幕布文章OPML转换为Markdown的方法
  3. MSSQL中的随机函数
  4. zabbix全网监控介绍
  5. JavaScript中类型检测
  6. 如何在 ASP.NET Core 中写出更干净的 Controller
  7. Ajax学习笔记-客户端模板引擎-9
  8. 叫号系统服务器,排队叫号系统设置方法
  9. 关于SN和PN的概念
  10. 易效能:有哪些可以高效休息的方法?
  11. native数据类型 react_React-Native 之 数据持久化
  12. HCNA华为认证网络工程师视频教程
  13. 非因解读 | 单细胞空间蛋白质组分析技术揭示乳腺癌循环肿瘤细胞(CTC)与肿瘤异质性及肿瘤免疫的关系
  14. 同步异步数据采集卡参数选择
  15. 手机设计软件有哪些(合集)
  16. 硬核干货 | 人大金仓数据库产品体系合集
  17. 1月全球CTF比赛时间汇总来了!
  18. 报错:跨域问题解决 No ‘Access-Control-Allow-Origin‘ header is present on the requested resource.
  19. 联想开机启动项按哪个_联想启动u盘按什么键_联想笔记本按哪个键进入u盘启动-win7之家...
  20. APISpace 跨境国际快递物流查询API

热门文章

  1. 平板酷派Ultranote X15概述
  2. 看到网友晒了新抱枕,我也想换个新的了
  3. 利用Django框架简单设计一个登陆页面
  4. pytorch教程 聊天机器人(详细注释attentionrnn输入输出shape等知识点...
  5. 国行ps4服务器维护,赶快回家试试!国行PS4终解除锁区附详解教程
  6. 服务器上搭建Lepus——开源的数据库监控系统
  7. 促进社群活跃的几种方法,你get到了吗
  8. MFC Windows程序设计学习笔记--文件和串行化
  9. 京东数据分析软件 | 如何获取京东平台的“增长榜单”
  10. 特征偏度和异常值处理