准备工作
(1)an Intel-based Macintosh,running Lion(OS X 10.7) or later
(2)注册为一名ios开发人员,之后才允许你下载iOS SDK,地址为http://developer.apple.com/ios/,点击Log in,要求你提供Apple ID。没有的话,点击Join Now,创建一个。
最重要的工具就是Xcode。可以从Mac App Store中下载,也就是点击你的Mac电脑的Apple菜单。
SDK版本:从Xcode 4.3开始,Apple一直将当前的稳定版Xcode和iOS SDK发布到Mac App Store中,同时也让开发人员能够从developer site上下载upcoming release的预览版。
你要下载的应该是非beta版的最新发行版,所以应该从App Store中下。
开发者选项:
免费的SDK下载中包含了一个模拟器,但是模拟器是不支持一些和硬件相关的特性的,比如加速计和照相机。而且免费的也不能将应用下载到你的实际iPhone或其他设备上,你也无法向
Apple的App Store中发布应用。要拥有这些功能的话,就必须选其他选项,它们不是免费的:
(1)标准程序:99美元每年。
(2)企业程序:299美元每年。它是为公司开发私有,In-house iOS应用而提供的。
Because iOS supports an always-connected mobile device that uses other companies' wireless infrastructure,Apple对iOS开发人员的限制要比Mac开发人员(编写和发布程序
,不需要来自Apple的监督和批准)的要更严格。即使是iPod touch以及iPad的Wi-Fi-only versions use anyone else's infrastructure,都会受到这些限制。Apple这么做是为了将不
怀好意或写的比较糟糕的程序的机会最小化。
如果你选标准或企业程序,那就要尽快做,因为验证过程要一段时间,有了验证后,你才能在你的实际设备上运行程序。
你需要知道的东西:
本书假设你熟悉Objective-C语言。Cocoa Touch,它是SDK的一部分。作为一个用户,还要熟悉iOS。还要去了解iPhone、iPad、iPod touch的细微差别。
不熟悉Objective-C,可以看这几本书:
Learn Objective-C on the Mac: For OS X and iOS 2nd
Learn Objective-C:A Primer
The Objective-C Programming Language
为iOS编写代码有什么不同?
(1)如果你没有在Cocoa或它的前身NextSTEP或OpenStep,你可能会发觉Cocoa Touch像个外国人(a little alien),它是你写iOS程序要用到的一个框架。如果你用过Cocoa或
NextSTEP,iOS SDK中大多东西你都会熟悉的。用于OS X开发的版本中的许多类都没有变。当然,Cocoa和Cocoa touch是有一些区别的。
iOS开发和桌面应用开发的几个关键不同之处:
(1)只有一个活跃应用
在任意一个给定的时间,只会有一个应用可以被激活并显示在屏幕上。从ios 4开始,当用户点击“Home”,应用程序们就能够运行在后台,但那也是在极少情况下可行。
当你的程序不是活跃的或者是运行在后台,它不会接受来自CPU的任何关心(attention)。
(2)只有一个窗口
桌面或笔记本系统允许许多运行的程序共存,每个程序都能够创建以及控制多个窗口,然而,iOS只给你的应用一个窗口使用,所有的用户交互都发生在该窗口中。
(3)受限的访问
只能从为你的应用创建的iOS文件系统中读写文件。这块去也就称为你的应用的沙箱。也不能够访问low-number网络端口或其他需要root或管理员权限才能做的事。
(4)受限的响应时间
在你的应用正在运行的任何一个时刻,可能都会被抽掉脚下的地毯,就是说iOS就是要快,如果你点击了Home按钮,iOS就会回到home,你就必须快速地保存数据并退出。如果用时超过5
秒的话,你的应用就会被杀掉,不管你有没有完成保存动作。注意,从iOS 5开始,有一个新的API,你的应用可以用它来请求额外的时间。
(5)受限的屏幕尺寸
前面的几代iPhone是320 x 480,iPhone 4's retina display是640 x 960,iphone 5是640 x 1136。 so you can’t really count on using those pixels the same way you would
on a traditional screen.
(6)受限的系统资源
But given the graphical nature of iOS and all it is capable of doing, running out of memory is very easy.
The iOS devices available right now have either 512MB (iPhone 4, iPhone 4S, iPad 2), or 1024MB of
physical RAM (iPhone 5, new iPad)sually, no more than half of that memory is left for your application to use.OS X可以将不用的内存写入到磁盘上的交换文件上,交换文
件的作用就是,当你的应用请求超过计算机可以提供的内存时,应用仍然能够运行,但iOS不会这么做,iOS设备上有多少物理内存,你的应用就被限制在这样的内存中。Cocoa Touch有
一些内置的机制能够让你的应用知道内存正在降低,当发生这样的事时,你的应用就必须释放一些不需要的内存或磁盘资源。
(7)没有垃圾回收,但是...
前面说过,Cocoa Touch用的是Objective-C,但该语言的其中一个关键的新特性在iOS上却不可用:Cocoa Touch不支持垃圾回收。就需要你手动做内存管理。但最近版本的iOS支持的
Objective-C版本有了一个特性叫自动引用计数,消除了需要手动管理内存。从OS X 10.8开始,它成为了默认的内存管理技术。
一些新的东西
我们说过Cocoa touch缺少一些Cocoa有的特性。但iOS SDK包含了一些特性,Coacoa中没有。
(1)iOS SDK为你的应用提供了一种途径来判断IOS设备的当前的地理坐标,利用的是Core Location。
(2)大多数iOS设备都有内置的相机和照片库,SDK可以让你的应用访问它们
(3)iOS设备有内置的加速计,应用可用它来侦测设备当前是如何被拿着或移动。
不同的方式
iOS设备没有物理键盘和鼠标。但在iOS上,假如有一个文本域,只要你触碰一下它,就会弹出一个键盘。