iphone开发教程(1) iOS大纲

 

iOS 大纲

iOS 由操作系统和应用技术构成。虽然和 Mac OS X 共用了很多技术,但是 iOS 是专门为了移动设备而设计的。当然如果你以前做过 Mac OS X 的应用程序,你会发现很多相似之处,但是很多技术只能在 iOS 里面使用,比如支持多触点和遥感等。

iOS SDK 包含了 API ,文档和一些工具 , 这些工具用来开发、测试、运行、调式和在 App Store 上发布应用。 iOS 的官方 IDE Xcode,Xcode 可以编译,测试和调式你的代码,并且设置断点在你的设备上调式程序,当然在应用的开发阶段你也可以使用 Xcode 上的模拟器来模拟的你的 iOS 环境,同样可以调式、编译和运行。( 业界大型的 iPhone 游戏更多的是用 VS C++ 利用 OpenGL 来开发的, Xcode 只是最后用来集成和测试的。)

这篇文章是从一个比较高的层面来讲解 iOS 的架构,你也可以查看其他的文章帮助你快速了解 iOS 的底层信息。

文章大纲:

1.iOS 技术层级

2. iOS 写代码  

3. 开始 iOS 之旅


1.iOS 技术层级

  iOS 核心层是基于 Mac OS X 的,他们有很多共同点基础类。在核心层上面是服务层( iOS Services ),服务层( iOS Services )是为应用提供 API .

 

Figure 1-1   iOS 技术层级

服务层( iOS Services )大部分是基于 C 语言写的。核心层和服务层( iOS Services )包含了很多基础性的类库,比如底层数据类型 (low-level data types), Bonjour 服务( Bonjour 服务是指用来提供设备和电脑通讯的服务) , 和网络连接类库 (network sockets) 等等。服务层( iOS Services )包括了 Foundation 核心类库, CFNetwork 类库 , SQLite 访问类库 , 访问 POSIX 线程类库和 UNIX sockets 的通讯类库,等等。

在服务层( iOS Services )的上层是多媒体应用层( Media layer ),多媒体应用层是用 c 语言和 Objective-C 混合写成。多媒体应用层包含了基本的类库来支持 2D 3D 的界面绘制,音频和视频的播放。这一层包括了一些基于 C 语言的技术,比如 OpenGL ES, Quartz, Core Audio 。当然也包括了基于 Objective-C 的较高一层次的动画引擎。

多媒体应用层( Media layer )上一层是( Cocoa Touch )层,这一层大部分代码是基于 Objective-C 的。这一层提供了很多基础性的类库 Foundation ,比如提供了面向对象的集合类,文件管理类,网络操作类等等。比如, UIKit 框架提供了可视化的编程方式,比如包含了 window, views, controls controllers 管理这些类。当然 其他的类库也提供了一些非常实用的功能,比如访问用户的通讯录,照片集,重力感应器,和一些访问硬件设备的功能。

如果你想马上开始做一个新项目,那么你最好使用( Cocoa Touch )层,特别你准备使用 UIKit 框架的时候。使用高级别的框架比使用低级别的框架更加容易使用,建议只有当高级别的框架没有现成的方法的时候,才考虑使用更低级别的框架。

更多的技术细节,查看 iOS Technology Overview .

2. 开始为iOS写代码

iOS SDK 支持创建一个图形化的应用程序,这个创建的应用程序可以被创建在iphone的桌面上,并且是独立于其他的程序,比如图片,天气,时钟。它会在一个独立的沙箱里,这个会在以后描述。当你的程序运行的时候,你的程序会占用整个iphone的界面。如果你开发过windows下的应用程序,你肯定熟悉什么叫多文档应用,很遗憾,iOS并不支持多文档模式,iOS的应用只能在独立的窗口下显示,不能在一个应用里多窗口切换。

iOS 中,事件处理模式和经典的桌面系统( windows )是不一样的。经典的事件处理模式是相应鼠标和键盘,因为 PC 的主要外设就是鼠标和键盘。而 iOS 并没有鼠标和键盘,所以 iOS 的事件处理模式是基于触摸的。一个触摸事件可以发生在任何时间,也可以和其他触摸事件组成另外一个事件,比如多触点。这些触摸事件既可以用来检测简单的操作,比如选择和拖放某个项目,也可以检测到复杂的操作,比如滑动(类似与刷卡的动作,在忍者水果中的切的效果)、捏开和捏拢(照片的放大、缩小操作)。

当你准备做一个 iOS 应用程序时,你不仅仅要考虑程序的代码结构,基于什么基础构架,更重要的是考虑这个应用的用户会怎么使用它。 iOS 应用程序应该是操作和界面都简洁的,而且关注于最终用户的实际需求。记住,你的用户很忙,他需求的是最快的获得他所要的信息,而不是花很多时间在一些华而不实的界面之间切换来切换去。所以请提供一个简单的界面布局,并且把关键的信息放在醒目的位置。在游戏或者其他一些娱乐类应用,你可以考虑多增加一些互动性的技术,比如重力感应和摄像头技术,这在其他游戏平台是不多见的。

当你第一次开发 iOS 应用的时候,你很可能只使用 Foundation UIKit 框架,这两个框架提供了基础的 API 支持和一些关键的服务。不过当你想提升你应用程序的档次的时候,你可能会需要集合其他一些框架。下面这些链接可以帮助你学习更多的框架知识。

查看更多技术细节看   Foundation Framework Reference   UIKit Framework Reference .

 

3. 开始 iOS 之旅

创建一个简单的 iOS 应用程序最简单的是使用 Xcode 的模版,当然如果你希望你的应用程序非常好用而且界面美观,你还是需要多阅读一点相关的文档。至少你应该阅读一下如何使用 Xcode 和怎么样一步一步创建应用程序的文章,在官方的 iOS Dev Center

如果你是对 iOS Mac OS X 一无所知,那么你需要花点时间去理解平台的基础设计模式和内部结构。因为只有当你的应用程序选择了最给力的框架时候,你的应用程序才是最流畅最给力的。所以如果你花一些时间来选择这些框架时,你可能会发现创建一个应用程序比学习基础设计模式困难多了。每一个 iPhone iOS 开发者都需要了解的框架是 Cocoa Fundamentals Guide 。这个文档讲解了 Objective-C 语言和 UIKit 的设计模式,当然还有一些其他框架的内容

当你理解了基础构架后,你可以查看这个文档 iOS Application Programming Guide ,这个文档提供了具体的开发细节和开发流程。这个文档提供了重要的关于如何编写 iPhone 应用程序的概念和任务为基础的信息,包含一些实例:怎么创建用户界面,事件处理和 iOS 的一些关键功能。并且还描述了整个开发过程,并解释如何使用 Xcode 编译和运行应用程序。

除了看这个文档以外,你还应该浏览一些苹果官方的代码示例。这些示例代码几乎包含所有的 iOS 技术点,你可以使用这些示例代码开始你的应用程序也可以学习一下某些技术点的详细用法。

 

 首先,对于一个完全没有mac开发经验,甚至从没摸过苹果系统的开发人员来说,首先就是要熟悉apple的那一套开发框架(含开发环境IDE、开发框架uikit,还有开发语言objective-c)。对于有一定编程经验的人来说,学习objective-c可能1-2周时间就够了,但是,要真正用好这门语言,并且最大限度地利用这门语言来提高开发效率的话,那就需要时日了。这里推荐两本书《objective-c基础教程》和《iphone开发基础教程》,这两本都是圣经级的巨作,我相信每一个iphone开发人员应该都不会错过这两本书的。   等你xcode和objective-c摸熟之后,或者说,上面提到的那两本书看完之后。这时候,你就可以开始学习游戏开发了。而目前,我个人觉得使用开源的游戏框架cocos2d来开发iphone上面的游戏是首选。为什么呢?其一,它是免费的,其二,它有强大的社区支持,而且网上还有许许多的优秀的辅助资源,包括教程、类库、工具程序、物理引擎、声音引擎等等。   接下来,我谈谈学习cocos2d,我觉得最好的资源有两个,就是两个网址:一个是cocos2d官网www.cocos2d-iphone.org,特别是论坛,你学习过程中遇到的任何问题到可以去那里提问。还有一个,就是http://www.raywenderlich.com/博客。这是一个牛人,我非常喜欢的一个牛人!首先,他写的教程非常清晰明了,一看就会,但也不失深度。而且在他的博客里,除了讲述cocos2d和游戏编程之外,还有iphone应用开发的一些知识。我觉得任何人都不应该错过他的博客!   另外,市面上现在有一些cocos2d方面的书籍,但是我只下载到了《Learn iPhone and iPad Cocos2D Game Development》这本书的电子版,听说网上已经有人在尝试翻译这部书了。不知进度如何。 上面提到的这本书的翻译教程链接是:http://www.cocoachina.com/bbs/read.php?tid-55155.html 这本书也写得非常好,里面非常系统地讲解了开发iphone和ipad上面的游戏需要注意的一些问题,比如内存很少的问题等。同时书里还涉及了cocos2d开发中大部分的内容,基本上可以说是所有的内容。同时,这本书的作者的网站也是不容错过的资源。 www.learn-cocos2d.com,里面有许多非常有用的链接,大家可以去看看。   当然,我忘记了一个很重要的部分。我看的第一个教程,就是知易写的cocos2d系列教程,教你如何使用tile map做一个坦克大战的游戏。这一系列的教程也是经典之作啊!:) 1.知易Cocos2D-iPhone 游戏开发教程001 (341) 2.知易Cocos2D-iPhone 游戏开发教程002 (94) 3.知易Cocos2D-iPhone 游戏开发教程003 (71) 4.知易Cocos2D-iPhone 游戏开发教程004 (73) 5.知易Cocos2D-iPhone 游戏开发教程005 (65) 6.知易Cocos2D-iPhone 游戏开发教程006 (66) 7.知易Cocos2D-iPhone 游戏开发教程007 (102)   等你把上面的内容都看得差不多的时候。这时候你需要做的是什么呢?没错!实践!实践!开发几个自己的小游戏。比如超级玛利、雷电什么的。如果要进一步深入学习cocos2d,那里仔细研究它里面testBed里面的例子工程是非常不错的选择,还有box2d testbed里面的例子。(现在大部分排名靠前的游戏,比如angry birds和tiny wings 都使用的box2d物理引擎!)   还有什么呢?呵呵,如果大家不嫌弃的话,我会翻译一些非常好的英文资料奉献给大家(大概每周2-3篇的样子,如果人气比较旺,我就加把劲啦!:)),当然还有我自己的一些心得和体会。总之,希望我们能够共同学习,一起进步。开发属于自己的游戏! 补充一点:www.ipadev.org,国人办的,这个网站相当不错!给大家推荐一下,上面有斯坦福大学iphone开发视频教程中英文字幕版1-6集,还有超过100本的iphone开发方面的电子书可下载(速度很快哦!)。   更新:如果大家在学习和工作中遇到什么问题,请给我留言,大家一起讨论一下。或者大家在看我翻译的教程的时候,如果实践起来有问题,也可以留言。或者说我翻译的不够好,请大家务必指出来!这样对以后的人都有好处。当然,如果大家觉得自己看起E文来有些吃力,或者相信我本人的翻译质量的话,如果找到一些好的E文资料或文章,也欢迎发个地址给我,我再翻译出来。谢谢!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值