设为首页 收藏本站
查看: 1190|回复: 0

[经验分享] iPhone开发系列文章(一)-iPhone OS 概述

[复制链接]

尚未签到

发表于 2016-5-18 07:15:23 | 显示全部楼层 |阅读模式
  
本人根据iPhone Dev Center 技术资料翻译并总结而成
转载请注明出处:http://blog.csdn.net/zhyzh2046/
iPhone OS由两部分组成:操作系统和能在iPhone和iPod touch设备上运行原生程序的技术。由于iPhone是为移动终端而开发,所以要解决的用户需求就与Mac OS X有些不同,尽管在底层的实现上iPhone与Mac OS X共享了一些底层技术。如果你是一名Mac开发人员,你可以在iPhone OS发现很多熟悉的技术,同时也会注意到iPhone OS的独有之处,比如多触点接口(Multi-Touch interface)和加速器(accelerometer) 。虽然到现在我还没有搭建起iPhone的开发环境,但是根据以往对iPhone的了解,有很多新鲜的技术是我需要学习的。比如,在软件的设计中使用它的多触点技术以及控制感应器的技术。下图为iPhone和iPod Touch,仅从外观看就相当炫了。
DSC0000.jpg
在SDK发布之前,第三方的程序是不能在iPhone上运行的(有些黑客可以运行第三方程序)。随着SDK的发布,iPhone的爱好者便可以开发在iPhone上运行的应用程序了。iPhone SDK包含了所需的资料和工具,使用这些工具可以开发、测试、运行、调试和调优程序以适合iPhone OS。XcodeIDE已经更新到支持iPhone OS的开发。除了提供代码的基本编辑、编译和调试环境,当在iPhone或者iPod touch设备上调试你的程序, Xcode还提供了运行点(launching point)功能。不知道这是怎样一个功能,估计就是在实际设备上设置断点,并可以看到运行的log信息。同时,Xcode还可以在iPhone模拟器中运行程序,模拟器就是指在Macintosh电脑上模拟基本的iPhone OS环境的平台。这个我比较喜欢,因为条件有限,只能从虚拟机上看看自己程序的效果,等有了实力再把程序放到真机上运行。模拟器对于学习iPhone的编程流程和语言是相当方便的。
这篇文章概述了iPhone OS基本特征,可以帮你熟悉这个平台。其实这篇文章基本上是从iPhone Dev Center翻译过来的,但是不完全是。我将一些冗余信息删除并加上了自己的见解,如有瑕疵请指正。
iPhone OS技术分层
在iPhone OS中,底层系统架构和许多其它技术与Mac OS X中的技术是非常相似的。因为iPhone OS的内核是基于Mac OS X 10.5中的Mach内核变化而来的。其实是对Mac OS X 10.5的Mach内核进行了相应的裁剪,并加上iPhone特有技术的支持而来的。内核之上是服务层,使用这些服务可以在平台之上开发应用。图1展示了而这些层的概图。
DSC0001.jpg
Figure1 iPhone OS 技术分层
这样的分层给开发带来了多种选择。下面两层与硬件部分直接交互,例如,Core OS和Core Services层包含了iPhone OS的基本接口,包括文件的访问、底层数据类型、Bonjour服务和网络的Sockets等。这些接口大部分是基于C语言的,包括的技术有:Core Foundation、CFNetwork、SQLite、POSIX线程的访问和UNIX sockets。我觉得iPhone的内核应该是用C写的,而且Mach的内核是一种UNIX的内核,所以使用这两层进行程序开发,就相当于使用Linux 的API进行程序开发,在这两层,你可以使用你的代码直接操作硬件,当然这需要你对较底层的开发比较熟悉。
上面两层会有更多高级的技术,这些技术使用基于C和基于Objective-C的混合接口。比如,Media层包含了支持2D和3D绘图、音频和视频的基本技术。这一层包含了基于C的技术:OpenGL ES, Quartz, and Core Audio。同时也包含Core Animation,这时一种基于Objective-C的高级的动画引擎。Objective-C语言是C的面向对象的扩展,在这里可以看作是Linux中QT库一样,你可以像使用QT的类和接口那样来使用基于Objective-C的接口,这些都是使用Objective-C语言封装好的,它可以缩短开发的时间,但前提是要熟悉Objective-C语言。
最上面一层-Cocoa Touch层中,大部分的技术使用Objective-C。这层中的许多框架为你的程序提供了基础的底层构造。比如,Foundation框架为集合、文件管理和网络的操作提供了面向对象的支持。UIKit框架为你的程序提供可视化的底层构架,包括窗口、视图、控件类和管理这些对象的控制器。这一层中的其它框架允许你访问用户的联系人和图片信息,以及设备上的加速器和其它硬件特征。在看多几个iPhone的程序之后,发现使用最多的就是UIKit框架,它提供了一个简单的图形界面程序所需要的控件,所以你可以是不熟悉Linux或Unix开发的程序员,你只要学会UIKit框架中控件的使用方法,你就可以创建iPhone程序。
新项目的出发点应该是Cocoa Touch层,特别是UIKit框架。当选择何种附加技术时,建议你从高层的框架开始,需要时,则应求助于低层的框架。如果要在你的程序中使用最少的工作量来支持标准的系统行为,更高层的框架会使这一过程变得简单。当要实现更高层中没有提供的定制行为时,这是唯一使用更低层框架的时间。
iPhone OS的更详细的技术概览,请参考iPhone OS编程指南
个人认为,初学者应该从最上一层开始,尤其是从没有Mac开发经验的人。上层的框架会节省你开发的时间,并且上层的框架已经非常强大,可以基本满足一个简单程序所需的所有技术。
为iPhone OS编写代码
iPhone的SDK可以创建运行在iPhone OS上的图形界面程序。当运行自己开发的程序时,程序会驻留在主屏幕上,和其它系统程序是一样的,比如Photos 、Weather和Clock。程序运行时,除了内核和一些底层后台程序,它是唯一运行在系统之上的程序。程序运行时,会占据整个屏幕,用户能看到的也只有你的程序。当用户点击Home按钮,程序退出的同时显示系统的主页面。独占系统的优势在于,它提供了底层系统资源的完全访问权利。你可以利用内置的硬件,如加速器、摄像头和图形硬件来只运行你的代码。
由于用户与iPhone和iPod touch设备的交互方式和与Mac OS X的交互方式有本质的不同,所以设计应用的方式也必然不同。主要的区别就是用户的输入方式有很大不同,在Mac OS X上是使用键盘和鼠标来捕捉用户的输入,系统给予响应。在iPhone上,OS要通过触摸屏捕捉用户的输入,同时要处理用户的多触点输入。iPhone程序中,在显示内容时没有单独文件窗口的概念,程序的所有数据显示在单一的窗口中。这就产生了新的视图和控件,以组织好的样式来呈现你的应用程序数据。另外,很多视图和控件会与Mac OS X中有所不同。大部分变化是透明的,但是有一些需要你重新考虑组织和呈现数据的方式。
对于传统桌面应用来说,iPhone OS的事件处理模型也是一项重要的里程碑。iPhone OS引入了触摸事件的概念,而不是依赖传统的鼠标和键盘事件。触摸事件随时发生,并且可以和一个或多个触摸事件结合。触摸事件可以用作与内容的简单交互,如选择或拖拽Item,或者可以用作检测复杂的姿势和交互动作,比如重击或者打开缩放和关闭缩放动作。(例如,在Photos程序中用作缩小、放大的动作)。其实,这是iPhone的一大创新,在自己的程序设计与架构中,应该尽量利用这一优势,给用户更好的使用体验。
当开始开发时,最初会用到的框架是FoundationUIKit框架。这两个框架提供了所有iPhone应用的关键服务。当要精炼你的应用时,应该研究系统的其它框架,看看它们提供了哪些服务。每个框架的文档包含相关概念资料的链接,这些会帮你学习更多使用这个框架的知识。
从哪里开始
利用Xcode提供的内置项目模板可以相当简单地创建简单的应用程序,但是,创建实用且漂亮的应用需要你用一些时间来通读现有文档。最少你应该花些时间来通读iPhone Dev Center中其它几篇引导文章,它们研究了工具和开发应用的流程。最为初学者,现在的任务就是学习这几篇入门文章,然后能运行一个Helloword程序,这就足够了。
如果你不熟悉iPhone OSMax OS X的开发,就必须要先理解基本的设计模式和iPhone OS的约定。开发iPhone的程序要尽量实用系统提供的框架,这样你开发的程序才能在iPhone中流畅地运行。如果深入学习框架的基本功能,你会发现在实际中创建自己的应用远比简单地学习基本设计模式困难得多。Cocoa基础指南包含了每个iPhone开发人员需要了解的基本知识。这份文档介绍了Objective-C编程语言的基础知识、编程习惯、UIKit用到的设计模式以及许多其它系统框架。
一旦理解了创建iPhone应用的基本习惯,你在开发过程中可以在iPhone OS编程指南中查阅到详细资料。这个指南包含了怎样编写iPhone应用的关键概念上的和面向任务的资料,怎样显示用户界面、处理事件和利用主要的iPhone OS特征的例子。同时,它描述了全部开发过程并说明如何使用Xcode编译和运行应用。
iPhone OS编程指南之外,你最好也通读现有的实例代码。iPhone OS带有大量全功能的例子,它会展示怎样使用现有技术去创建真实的应用。你可以使用这些示例作为自己应用的出发点,或者通过它们,可以学习更多怎样使用特定特征的知识。在iPhone Dev Center中有许多示例代码,都很简单,但是这有助于你学习iPhone程序的框架以及Objective-C语言。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-218363-1-1.html 上篇帖子: Mac启动U盘怎么制作 u盘制作mac安装盘教程图文详细介绍 下篇帖子: Mac 上 set up Android开发环境
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表