创建一个iPhone应用程序

     在高级开发人员看来,开发一个iPhone应用程序比开发一个Mac OS X应用程序的过程简单。因为他们使用了共同的开发工具,基于相似的基础类库。其实无论相似与否,他们之间总有一些区别。一个iPhone不是一台台式机;他拥有不同的用处和不一样的设计需求。那些需求需要利用iPhone OS中的一些强项,并且要放弃一些对于移动平台不合理,不切实际的功能。由于iPhone和iPod touch屏幕比较微小的原因,这意味着你的软件要让用户始终关注那些他们真正需要的信息。

 

     iPhone OS提供了iPhone和iPod touch相对于桌面应用程序没有的用户交互体验。多点触碰接口这个革命性的新技术,他可以将每一个独立的手指在屏幕上触摸或者做了多触点手指的活动或者复杂的属于行为传入到系统中。另外,嵌入在硬件中的加速传感器,可以让你跟踪当前屏幕的定位并对你的内容做出调整。理解了这些新的技术如果在你的应用程序中工作,你就可以更集中的关注与设计一些新的有趣的东西给你的用户

 

最好的方法让你去理解如何设计一个iPhone应用程序就是看一个小例子。这篇文章带你去看一个叫MoveMe的例子应用程序。这个例子的包含了一些典型的iPhone应用程序的行为,他包括:

  • 初始化应用程序
  • 显示一个窗口
  • 绘制自定义内容
  • 触碰事件
  • 动画

 

图1,展现了应用程序的接口。触摸Welcome按钮将会触发一个动画让按钮自动在你手指离开的时候回到中间。当你在屏幕中拖动你的手指的时候,这个按钮会跟随你的手指。把你的手指从屏幕上移开的时候,这里触发了应外一个动画,这个按钮会马上回到你原来的位置。双击屏幕的其他位置,这个按钮上的语言会发生变化。

 

在读这篇文章的其他部分的时候,你最好下载MoveMe应用程序,这样你就可以跟着代码一起做了。你同样可以阅读下面的两篇文章,来理解iPhone OS平台和工具还有开发语言,如果你还不太理解Objective-c开发语言,你需要阅读Learning Objective-C:一个可以让你熟悉最基本的一些Objective-C的语法。

 

下载MoveMe的例子提供了你创建应用程序所需的源代码和一些支持文件。你可以使用Xcode应用程序(位于 /Developer/Applications 文件夹下)来管理你的iPhone OS项目。每一个Xcode项目的窗口为集中你的代码和源文件提供了工作区,他建立了条例清晰的规则去管理你的源文件和整合你的应用程序,并为编辑调试你的代码提供了工具

 

图2显示了MoveMe应用程序的窗口。打开下载的压缩包,放到你本地的磁盘,双击打开MoveMe.xcodeproj这个文件。(你也可以使用Xcode菜单中的 File > Open and choosing the file来打开你的文件。)。项目中包含了一些Objective-C的源文件(那些以.m结尾的),一些图片文件和其他资源,还有一个预定的用来创建应用程序包的目标(MoveMe)

在iPhone OS中,Xcode的最终目标是把你的应用程序二进制的文档和一些其他资源一起捆绑在应用程序中。程序包在iPhone OS系统中有一个比较清晰的目录,大多数文件都是位于目录的高层。然而,程序包有可能也会包含一些子文件目录用来存储本地的一些字符串或者是其他一些特别的资源。对于这篇文章来说你不需要知道确切应用程序包的组成,但是你可以在iPhone OS Programming Guide的 The Application Bundle里找到你感兴趣的一些东西。

 

创建MoveMe应用程序.  

 

   要建立MoveMe应用程并在你的模拟器中运行,你需要做如下一些步骤

  1. 在Xcode中打开MoveMe.xcodeproj文件
  2. 在项目工具栏中确定模拟器选项在Active SDK菜单中被选中(如果Active SDK菜单没有出现在工具栏上,选择Project > Set Active SDK > Simulator.
  3. 从菜单中选择 Build > Build and Go (Run)或者只要简单在工具栏上点击Build and Go按钮。

 

当应用程序完成了编译,Xcode会把它加载到iPhone模拟器上并运行。你可以使用你的鼠标点击Welcome按钮然後在屏幕的范围内拖动他。如果你为你的开发配置了一个真实的iPhone的话你可以把你的应用程序放到真实的机器上去运行。请参考[iPhone Development Guide]]中的Development Environment。

 

 

有关内存管理

iPhone OS是一个支持面向对象开发的系统,大多数的内存空间的分配都是靠Objective-C来完成的。在iPhone OS中运用了引用计数的方法来确定什么时候可以安全的删除对象。当你第一创建了一个对象,他的引用计数就变为了1。客户端接受这个对象并可以保持他知道当他不再需要的时候释放他。当一个对象的引用计数变为0以後,系统会自动回收这个对象的内存。

 

注意:iPhone OS中不支持垃圾回收的内存管理因为那是在Mac OS X v10.5或者以後的版本中才有的。


如果你想要为一个和对象不相关的东西分配一个内存空间,你可以使用标准的malloc内存分配类。如果你想用malloc分配其他的内存,你需要使用free命令来先释放一部分内存来用来存储新的对象。系统是不会释放基于malloc分配的内存空间的。无论你怎么分配你的内存,对于iPhone OS来说管理好总的内存开销比在Mac OS X平台下要重要的多。尽管iPhone OS有虚拟内存系统,但是对于交互类型的文件来说就不好用了。这意味着有的代码段可以在只被使用的时候调用,但是你的应用程序数据必须全部放入到内存中。系统的监视器会监视所有的空馀的内存然後为你的应用程序需求开辟内存空间。如果内存满了,那么系统也许会自动关闭你的应用程序。事实上这个操作是最後的一招了,为了确保剩下的内存供应用程序使用一些临界的判断比如接受电话。更多有关怎么样在iPhone OS中分配内存空间给对象,可以看Cocoa Fundamentals Guide,想要知道如何改变你的代码的内存开销,请在iPhone OS Programming Guide找到Managing Your Memory Usage

 

初始化MoveMe应用程序

 

对于每一个基于C的应用程序来说,iPhone应用程序初始化的切入点是一个叫main的函数。好消息是,当你在Xcode中用iPhone的模板创建一个新的项目的时候,你不需要自己写这个方法。这个模板包含了所有用于启动你的应用程序的方法。

1 int main(int argc, char *argv[]){
2 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
3 int retVal = UIApplicationMain(argc, argv, nil, nil);
4 [pool release];
5 return retVal;
6 }

 

列表1展示了MoveMe应用程序的main函数。这个main函数位于项目的main.m文件中。每一个应用程序中你创建的main函数应该都和这个差不多。这个函数有两个关键点。第一,他创建了应用程序最高级的自动释放池,他的作用是用来回收用autorelease这个函数来创建的Objective-对象,第二,是一个叫做UIApplicationMain的函数用来创建MoveMe应用程序的关键对象,初始化对象和事件循环。这个应用程序在退出前不会从这个函数返回任何东西。

 

在一个项目中最重要的一个结构细节是定义了应用程序的代理对象,他是为你项目中类的一个实例。MoveMe应用程序的代理类是定义在了MoveMeAppDelegate.h这个文件中同时MoveMeAppDelegate.m是他的实现文件。你可以把这些对象添加到项目中使用Interface Builder去指定一个对象作为应用程序的代理。Interface builder是一个可视化的工具你可以用他来在窗口中创建排列视图,管理视图的层次,配置每一个视图的操作,并在视图和应用程序对象间建立连接。因为他是一个可视化的工作,你可以用鼠标在上面拖放控件来达到你想要的效果。你可以实时查看和修改你的界面。Interface Builder用一个nib文件来保存你的用户界面,他也是你引用程序对象的归档。

 

http://www.cocoachina.com/wiki/index.php?title=Creating_an_iPhone_Application

posted @ 2010-11-04 18:18  wgw8299  阅读(364)  评论(0)    收藏  举报