今天,2010年07月30日, 在几乎可以融化大家的44C的成都,牛一周终于顺产了。点这里可以去产房(App Store)围观。
从牛一周怀胎到顺产历时将近2个月。此篇文章是想记录一下并且和大家分享一下我们在怀牛一周的过程中遇到的挫折和经验,希望对您有用。
准备工作
Don’t Panic
准备工作是我们在牛一周怀胎过程中最耗时的一部分,毕竟我们整个团队从来没有接触过Objective C一类的编程语言。几乎有一个月的时间都折腾于黑苹果,安装XCode,熟悉XCode,看资料,看视频中。
不过,等现在我们再回视整个进入的过程,并不困难。So,如果你也想进入iPhone/iPad的开发队伍, Don’t Panic!
我没有什么好书推荐一类的。类似于<The Hitchhiker’s Guide to the Galaxy>这样的最佳指南,在iPhone开发中,官方SDK就是最好的Guide。
如果非要一份从“从0开始学iPhone开发”一类的资料的话,那我的建议一定是Apple在Stanford课程的录像。点这里查看eMule中的资源。
然后呢?
然后就开始吧!Objective-C没有想象中的那么难,虽然刚开始看起来并不是很漂亮。但是如果你有C语言和C++等语言基础的话,那我想Objective-C的学习基本不会让你崩溃。 至于传说中的麻烦的内存管理。。。 其实, 也没有这么难拉。 我们的程序在开发到beta阶段的时候才用工具测试是否有内存泄露,结果惊人的是一个也没有*_*。 Objective-C iPhone中的内存管理关键就在于你得知道哪些类型是需要使用指针的,什么时候应该去释放它,赋值操作到底是赋值的值还是赋值的指针。
- 如果你是从嵌入式开发转过来的小朋友,那你有福了,你完全知道8位和16位的区别,&0xF0的内涵,Objective-C简直与你同生!
- 如果是熟悉C和C++的小朋友一定会很轻松,而且你也会高兴于不再纠结于如何取地址和取地址的地址这样超级抓狂的操作,Objective-C比C中的指针操作简单多了。
- 如果是从Action Script或者JAVA或者C#一类语言转过来的小朋友,最好还是了解一下基础知识吧,要不很容易造成内存泄露。
- 如果是对堆栈呀、指针呀、消息呀、事件呀完全没有概念的小朋友,那。。。(我也不知道那怎么办,反正就是学呗)
最后,我们一直觉得读代码会是很好的入门学习的方法。那从哪里可以开始呢?
- Again,SDK里有很多示例代码。
- 想进阶?请看Facebook的小朋友给大家的礼物:Tree20(点这里查看)。里面有大量控件,这些控件是Facebook小朋友们在开发Facebook on iPhone的时候用到的。这是一个开源项目,所以你可以窥视到任何一个Sample里的酷炫效果的对应代码。
- 想看看一个真实完整的应用程序的代码、资源等结构?Wordpress的小朋友们为大家准备的是整个!整个Wordpress的iPhone/iPad应用程序的源代码(点这里查看)!并且这个项目在一个工程中包含了iPhone和iPad两个平台的代码,这对需要开发universal app的小朋友最好的参考(就是在一个app能同时工作于iphone和ipad,并且还可以根据不同的设备选择不同的体验方式)。
如果你还有问题?没关系,你可以上国内的论坛:Cocoachina.com,或者国外的论坛:iPhone dev sdk。当然你也可以给我们写邮件探讨 team+ipad@mycolorway.com (不用担心,那个+号是对的,你没有看错)。
应该开始了吗?
我们的失误:原型!原型!原型!
也许你和我们一样,当开始上手后就迫不急待地新建一个工程开始新应用的开发,甚至这种热情可以冲破你对原型设计重要性的理解,即便是有了原型,也许你也会迫不及待地开始编码。这样的失误对于我们这样注意原型设计的团队一样也犯了。
我们在设计的时候,做了信息元素的架构,做了视觉设计。 但是对交互方面却没有仿真,而在iPad这种对交互性要求很强的设备上,等设计已经实现后真实地灌入了文章后反复操作才发现交互上的瑕疵。因此在交互方式改进的过程中造成了一定量的重新编码。当然,我不是说在设计之初做了交互仿真就能一次到位。我是想说明的是,iPhone/iPad的程序开发中,交互方式的重要性会高于互联网上网页的设计,也会更超出设计师的想象能力。例如按钮多大合适?拖动的感应举例是50像素合适?还是100像素合适?这些交互不在真机上仿真之前,谁也不知道上手后的效果。
需要提醒的是,如果你们团队全是由逻辑和理性充满整个世界的程序员构成的话,那可能你们会遇到一点小麻烦,那就是可能没有一个人会关心用户体验。极有可能就开发出了那种彩云字体加彩虹渐变一般的应用程序,让用户几乎以为是19世纪初的人在用21世纪的设备开发应用。“呀!我们团队似乎就是这样的,咋办?” 也许这篇来自Taptaptap的文章可以帮助你早日渡过苦海。
那如何在iPhone/iPad设计上做原型设计呢?apple在WWDC2009年时和大家分享过一个最佳实践:。但这种方式到底好不好?有没有更好的设计办法?能不能把Axure结合进来?我们也不知道,我们也在尝试。并且开放的彩程设计会在第一时间和大家分享我们的设计方法:)
提交应用!
送医院检查咯~
终于终于,牛一周送医院检查了。当然,你的应用也要经过这个阶段。 在提交前,我们看到论坛中大家讨论自己程序是如何如何被Reject掉的,搞得十分紧张。最后经过历时9天的in review,终于顺产。那顺利不被Reject的秘诀是什么呢?
好嘛,我还觉得我们没有资格出来大谈秘诀。但是目前我们所知道的是:
- 严格按照SDK给出的API写代码,有的私有API很诱人,但是千万别用。
- 体验上别太差,如果连苹果审核的人都觉得为苹果App Store上因为这个程序而为耻的话,那我想,这样的程序大多是不会通过审核的(参见官方的用户体验设计准则)。
- 程序别Crash,在苹果的审核人员手中Crash的话,不是一个很好的开始哟。
- 提交前,请反复确认你的程序是否符合提交的要求了,请仔细阅读官方的手册。
我们乐意和您讨论:)
“我不同意你们的说法…”
我们并不是那种关在地下室,悄悄地筹划一项颠覆世界的举动的团队(即便是在筹划颠覆世界,我们也会乐于并敢于和大家分享我们的看法)。所以,在我们设计过程中的经验,您不仅可以从follow我们博客中获得,您当然也可以和我们直接取得联系,或者直接写一封踢场的邮件。地址 team+ipad@mycolorway.com。 或者,你觉得“我喜欢你们团队”甚至“我喜欢你们团队的那个那个…”,欢迎大家来耍,也欢迎大家来勾兑:)
Anyway,我们乐于与您一起分享各自的见解。
加入我们的尝鲜小朋友队列
在App Store上架前开始帮助我们测试应用程序
最后,如果你有iPhone或者iPad,并且希望参加到我们的Beta测试者的队列中,可以发送你所使用的机型(iPhone? iPhone3G? iPad? etc.)和机器的UDID到我们的邮箱中,提前拥有和我们一起操翻我们应用程序的权利。我们的邮箱是team+ipad@mycolorway.com,当然,由于Beta测试者数量有限,我们乐意看到您在邮件中简短地描述一下申请原因。
一些有用的资源
最后,附上一些我们认为比较有用的资源吧。


看了你的开发记,我知道我是三不知小朋友哇。。。。。
好嘛,这是我看过最通俗,最有人情味的手记。
谢谢分享,文字很有亲和力,阅读体验很好
作为奖励,推荐一款设计iPad App的原型工具 – Interface。用PS出图后在Interface里做交互流程。因为Interface本身就是一个iPad应用,所以在预览时,原型几乎接近真实的产品体验! http://lesscode.co.nz/interface
wow,谢谢allen,这个东西很cool~
Aq95Mz ojkqtqriypgt
学习了,一口气看完所有《牛壹周》相关的文章。。。