iOS 概览

#iOSdev iOS 是iPad/iPhone等苹果设备操作系统,相似 Mac OS X 但专注移动。iOS 有独特之处,如多点触摸界面和重力感应等。开发 iOS 程序先下 iOS SDK,含开发工具 Xcode、代码和iOS 模拟器,需 Intel Mac 机器。

#iOSdev iOS 基于Mach kernel 变体(同Mac),之上服务层由上至下为 Cocoa Touch -> Media -> Core services -> Core OS -> kernel。

#iOSdev Core 两层有最底层接口,文件访问、底层数据类型、Bonjour 服务、网络接口等等。接口大多基于 C,包括 Core Foundation, CFNetworl, SQLite 以及 访问 POISX 线程和 UNIX socket 等等技术。之上层是 C 和  Objective-C 的混合。Media 层提供 2/3D 绘制,音频视频。该层有 C 的 OpenGLES, Quartz, Core Audio. 也有 OC 的 动画引擎: Core Animation. Cocoa Touch 层全是 Objective-C。应用大多依赖此层 Framework。比如 Foundation Framework 提供集合、文件管理、网络操作等面对对象的支持。UIKit 则提供各种视觉支持,各种窗口视图神马的。硬件特性其它框架支持。

#iOSdev 新项目起于 Cocoa Touch 层,尤其 UIKit Framework。开发尽量采用上层的技术/framework,通用省力。特性实在满足不了再往下层找接口。

#iOSdev iOS SDK 可创建原生图形 iOS 程序,运行就单窗口全屏,无同屏多窗概念。iOS 事件处理模型和传统桌面分野巨大,依赖触摸事件非点击事件。拖曳、选择等简单触摸事件可即时同时发生,与内容互动。复杂事件则如swipe横扫,两触点接近远离(照片放大/缩小)等。

#iOSdev 别光想程序架构,多想想用户。界面简单直接,突出重点信息服务用户,因为用户没耐心;游戏可用相机和重力感应,因为用户憎恨平庸。

#iOSdev 开始开发先用 Foundation, UIKit 两者,它们丫是所有程序关键部分。具体文档令具。此外,Xcode 内置模板,搞个简单iOS程序很易。入门易,深入难。深入需研读 iOS Dev Center 所有文档(就是这个笔记系列)。

iOS 开发入门途径

#iOSdev 如果没有Mac编程经验,先理解iOS基础设计模式和习惯,勿急码程序,磨刀不误砍柴功。所有 iPhone 开发者都应该先通读基础文档 Cocoa Fundamentals Guide,学习 ObjectiveC 编程\惯例\UIKit和其他框架的设计模式。

#iOSdev 基础了解之后,看 iOS Application Programming Guide 学细节和开发流程。该文档有概念介绍、具体任务、界面构建、事件处理示例,同时描述如何用 Xcode 从头到底地开发。iOS Application Programming Guide 之后,多看代码实例。iOS 自带很多全功能示例,多看,学着点。


IOS运行时环境

#iOSdev iOS 程序具有即用性:典型应用场景是用户取出设备开程序,用一会儿就关程序把设备塞回去。设计程序需考虑此特点。

#iOSdev iOS 多任务管理:多任务模式下,App 不退出,自动挂起到后台,此时需要执行保存用户数据。内存不足时系统会按照活动时间顺序,轮询query后台任务退出,为当前任务获取内存空间。

#iOSdev iOS 虚拟内存系统类Mac, 不支持 page to disk。不足时先释放只读内存page, 然后向运行程序发送通知,所有程序必须响应通知,该退出的退出。

#iOSdev 应用需要考虑自动休眠计时,比如用重力感应的游戏不需要触摸屏幕操作,需要关掉自动休眠计时,否则玩着玩着就黑了。同时也要兼顾省电。

#iOSdev 每个App都分配 Sandbox, 首次安装创建 App home目录 /ApplicationRoot/ApplicationID/  。安全特性是也。

#iOSdev Keychain (用户名密码)数据不在沙盒,统一保存便于iTunes backup。

#iOSdev App home目录结构:
  • /Appname.app 程序本身,安装时签名。改动导致无法启动。非首次不备份
  • /Documents/ 用户文档数据,可用户文件共享,有备份。
  • /Library/ 非用户数据文件,可定义子目录。除 cache 子目录其它有备份。
  • /Library/Preferences 勿自创偏好文件,用 NSUserDefaults 类或 CFPreferences API, 有备份。
  • /Library/Caches 程序启动/升级续用文件存此,自控。无备份。
  • /tmp/ 临时文件,程序不开随时可能被干掉。无备份。

#iOSdev App 升级会创建新的 App home 目录,然后把旧 home 目录下用户数据移动过来。/Documents /Library 目录文件必然会在升级中留存,其它用户目录也可能被保留,但是别指望。

#iosdev iOS 文件系统大小写敏感;iOS 模拟器和真机可能有不同,比如不支持Page to disk(…), OpenGL ES 实现也可能不同。需特别硬件支持用 info.plist 中 UIRequiredDeviceCapabilities,具体查文档


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值