明明我应聘的是嵌入式,却要我开发一款ios软件?我以前可是从来都没有碰过苹果系的产品。结果这一趟走下来,从注册公司开发者账号,开发软件,上架商店,也有一些收获。这篇文章主要是一些感想,记下来备忘,也想给一些想做苹果开发者的朋友们一些提示。

开发者账号

首先是开发者账号,只要是要做ios开发,没有苹果的开发者账号你甚至没办法把程序发出去给别人用。

开发者账号还有个好处就是可以构建测试版本,通过testflight软件发布的测试版程序根本不需要苹果审核。名额足足有10000人,可以添加appleid自动发送测试邮件,也可以发送公开的邀请链接邀请别人下载安装软件。有些特殊需求的软件甚至不需要发布在app store上,使用人数也没这么多,那么testflight就够用了,不用走审核上架的流程。总之申请账号越早越好。

申请

开发者账号分公司账号和个人账号,是哪个就申请哪个。申请公司开发者账号麻烦点,我那时候花了3-4天,期间苹果又是给老大打电话,又是给老板打电话确认。我认为苹果是通过这种方式在收集公司信息,真是个可怕的公司。至于申请方法,没什么值得一提的,按照官网流程走就可以了。

还有一件事,当时我不知道怎么判断账号是否是开发者账号,其实直接上开发者中心登陆账号,如果账号左边的栏目不多,比如没有App Store Connect、Certificates等栏目,就说明还不是开发者账号。我发一张开发者账号的截图出来参考。

开发者账号截图

开发

我到处查看资料,发现swift+storyboard的方式最方便合适。然后就是看了几天教程,一步一步把工程搭起来。期间谷歌和苹果开发者平台以及百度(排名分先后)给了很大帮助。

swfit

学语言就那么一回事,反正也不深入。先看几天基础,比如怎么定义变量,定义函数,条件判断,循环怎么写,内存怎么管理,就可以开始着手了。

swift的内存管理是计数应用,不知道的可以点进wiki了解一下。因为不够熟练,我在这个地方遇到过问题。将函数内定义的类直接放到后台运行,结果函数一退出,程序就把那个后台就给我GC掉了,当时想了下才发现这个问题。

对于c/c++出身的我理解那个变量的管理方式有点困难,很是费了一番功夫。比如var s: String?var s:String的不同之处。印象中这种语法是从c#开始使用的,通过这种方法能有效地避免指针的出现,我认为这是一种很巧妙又优雅的解决方案。

用过的东西包括定时器、??语法、闭包lambda、还有就是用NSLog替代print,NSLog前面自带时间,调试好用。还有就是直到后来我才发现if没必要写括号,尬住了。

我一直都没搞懂在引用计数下闭包是怎么管理生命周期的,也没搞懂let到底是怎么区分常量的(类比c中指针const的位置),闭包那奇葩的语法只会用(写是不可能写的……)。总之就是,我又不专门搞苹果开发,学那么多干嘛。

storyboard

用swift花不了几天时间,摸索storyboard怎么用和画软件的界面花的时间才多。不过搞熟了之后速度还是很快的,简单明快,拖拖拉拉就完事。我在弄这玩意的时候爽得很,脑子不用动,头发就少掉。

基本上全部的显示都可以在storyboard中做,绘制页面,页面间的跳转,直接把view拖到page对应的类里面,填上名字就能用。segue给一个唯一名称,在代码里直接就jump。打开storyboard,截屏就是一个软件原型图,不用再搞其它花里胡哨。总之界面开发就一个字,爽。

这东西没什么可讲的,慢慢摸索就能学会。我没怎么看那些教程(大多都又长又臭),都是一个一个地方点几下,查文档,配合搜索引擎。

一些废话

百度的苹果开发都是全是基于objc讲的,而且都是前几年的比较多,可能是前几年流行过一阵子的ios开发有关?我读的大学里还有一个专门的苹果机房,听说是前几年配置的。不过配置之后就没开过几门课,我读的时候也没有开,因为根本没人选。就我个人本身而言的话,苹果电脑贵的要命,每年还要几百块的账号注册支出,比我家拉网线还贵,实在是舍不得。而对比国外同事人人一台苹果的情况之下,看来我们还是不够富有啊。

谷歌搜索出来的信息就全是用swift讲的。从这点可以看出国外的软件开发更加繁荣,个人开发者和小公司开发者很多。因为中小型应用很多,所以对新技术的接受程度普遍而言非常高,软件开发氛围是真正的好。而对比国内,其实可以发现软件公司们就像土地兼并一样,大厂们不断吸收中小软件公司,环境很是恶臭,我觉得这点非常不好。像是以前很好用的快图和天天静听,都是在收购之后销声匿迹了,如果……

公司配置的二手苹果笔记本好难用,电池还鼓包。这个软件开发历时约两个月,开发效率让我有点惭愧,不过考虑到以前苹果都没摸过,仔细想想也可以接受?还有就是,我好像要一台苹果笔记本!

上架

上架其实很简单,跟着官方的指示走就行,原则就是把审核员当成客户对待。我开发的是物联网应用,没有产品根本没法用,就一个死页面。不过我准备了产品的官网,产品的介绍PDF,软件使用视频(重要)之后,审核员很快(2天)就给我通过了,通过之后就能在app store上搜索到开发的程序啦😄。