WeTest 导读:
作为了一个 android 客户端开发,如果你不懂点 ios 开发,怎么好意思说自己是客户端开发呢,本文讲解如何让 android 开发码农在一个星期上手 IOS 开发 --《记录自己 IOS 开发经历》。
一、开发工具对比
AndroidStudio 作为 android 开发的御用编辑器,相信小伙伴不用我解释太多,其中有太多好用到哭的功能不想过多解释,相比之下,XCODE 作为 IOS 开发的御用编辑器,大部分功能就比 android studio 要落后很多,我接触过一段时间,有以下几点感悟:
1、Version 8.2.1 之后,直接导致之前的很多插件都没法使用了。
2、swift 代码重构等功能迟迟没有提供,相信这对于所有小伙伴来说,至少是 1 万点伤害。
3、查找功能差 Android 一条街,double shift 查找各种,而 XCODE 需要点击到左下角,在选类型,在查找。
4、调试功能相对于 AndroidStudio 来说,有点类似于我国和美帝的差距
5、自动补全,代码着色,注释功能经常间歇性抽风,不知何故,严重需要重启 MAC 才恢复,(注意,不是重启 XCODE),比如下面注释不能使用的场景
6、等等,不想说太多。。
但是,你必须得接受一个事实 XCODE 毕竟是 IOS 开发的御用 IDE,不用也不行啊,那么,有没有什么办法,使我们在开发 ios app 的时候,稍微爽点,答案,当然是有的,比如,我是这么解决的。
更加不忍直视的是,直接可以看部分代码片段,恐怕 xcode 是不会出这么人性化的功能了。
呵呵,聪明的你已经明白了,同时开一个 APPCode 来作为辅助,是一种不错的选择,而且这对于曾经是 android 开发的你来说,绝对是一种增强型体验,快捷键就使用你之前的即可,查找,rename,等等功能爽的不要不要的。
二、干货来了,如何入手
反正以上槽也吐了,那么,接下来总要说点好的吧。
1、感谢苹果推出 swift 这种语言,使得 android 码农可以非常迅速的搞起 IOS 开发,如今 SWIFT 已经 3.1 了,如果,你们打算从新撸一款 APP,如果还是说,用 OC,我建议你治疗一下,swift 已经很成熟了,不存在升级一个版本,面临大量代码改写的悲剧了,而且,git 上 swift 的开源库,也是慢慢的够用了,退一万步讲,即便没有,引入 OC 的库,也是能够用的。那么,如果你打算搞起 swift,我肯定是要推荐一些库给你的:以下内容纯属干货:
2、以上说了语言上的选择,swift 没错,那么,接下来你肯定是要熟悉 swift 语法的,我建议你看看这本书,如果你不太喜欢阅读英文,没有关系,社区已经有人翻译了中文版本的,地址在这里;英文原本直接在官网下载即可。
我想,你一定会说,究竟怎么一个星期就可以搞起?
a、swift 语法的熟悉,你可能要注意一下 let,optional,guard,switch,tuple 之类的,其他的,可以在一遍撸一遍学了,反正用几次就熟悉了,可能语法我只能给你 2 天时间,不能再多了,ps(学习语法的时候,最好是拿你比较熟悉的语言去对比,个人觉得这种方式是最快的)
b、其实 IOS 开发的重点并不在语法,而在于苹果为 IOS 开发者提供的一些 UI 层面的库的熟悉,这个我只能给你 4 天时间,不能再多了,这部分的学习相对来说是比较痛苦的,不过,方法依然是对比学习,对照着 android 的四大组件,相信你很快就可以从 UIKIT 中找到他们的影子,举一个最基本的例子。
相信你看到这幅图之后,脑海里面一定是出现了:
没错,就是这样来的,其他的 uitextview ,uitableview,uilabel,uiimageview 不能说再多了,都是这个套路。
c、推荐工具机器书籍:
dash 是一定需要装的,这个查找资料实在不能方便太多,至于书籍,个人觉得没有必要推荐,如果实在要推荐,那肯定是苹果的开发者帮助文档了,直接下载在 dash 里面看就好了。
至于工具,stackover ,和 google 才是你最需要的,我在爬坑的过程中,遇到的 99% 的问题都是在 stackover 上找到了解决方案,还有 1% 的是至今也没有解决的,问同事,同事也是无解。。
d、swift 的亮点有哪些?面向协议 vs 面向对象
没错,swfit 是面向协议的编程语言,加上逆天的协议扩展,各种语法糖只有你想不到,想到了都惊呼,居然可以这么玩。
协议是可以有默认实现的,请在撸的过程中慢慢体会这个的好处,至少,可以为你省去不少的无用代码《空实现》,当然,有人可能会说,这是你定的协议违背的单一职责原则吧,好吧。。
函数式,真的假的,还函数式?
是真的,千真万确,swift 是可以玩函数式的。
这不,有人出了一本书,而且,喵神还帮忙翻译不是。
三、俗话说,会列表懂详情,你就是一个 “合格” 的客户端开发
那么,问题来了,IOS 中,如何去做一个列表:实际上,接触过之后,你会发现套路很简单:
a、使用到的组件当然是 UITableView,那么,和 RecyclerView 对比,有什么区别呢?
b、RecyclerView 中的列表项的数据是有 adapter 的onCreateViewHolder和onBindViewHolder合力完成,onCreateViewHolder负责 layout 出 cell 的架子,onBindViewHolder负责给架子填充实际的数据,那么 IOS 中是如何做的呢?
同理,
UITableView 的这些个方法可以给你创建 cell 的架子,然后数据的绑定就由 DataSource 的
这个方法提供。那么问题来了,UITableViewDelegate 是干嘛的呢,相信你见过 ios 对于列表项的左滑出现删除,乃至,长按拖动列表项的位置,其实都是由这个代理提供对应的接口去实现。
c、因此,细心的你会发现,两个平台的在列表上的实现基本上原理是一致的,不同的是采用的设计模式不同,android 显然是使用的适配器模式,一股脑的所有的动作都在 adapter 中做好就可以了,两者也均有 CELL 重用机制,也都会遇到列表常见的性能问题,这些也需要在开发的过程中细心的去体会。
d、详情不必多说,只要你了解了 UIViewController 的生命周期,以及 navigationController 对于 Controllers 的管理栈,一切都是和 android 惊人的类似,但是似乎 IOS 又简单了不少,至少在生命周期函数上,IOS 没有什么 onstop,(onresume 可以找到对应的 viewWillAppear) 等等,fragment 的概念似乎在 IOS 中不存在,不过可以类比为一个 UIVIEW 吧(本人暂时这么理解)。
四、其实,IOS 开发也是有很多坑在等待着你,不过别急,你踩过的,99% 都可以在 stackover 和 google 上找到。
a、比如,IOS 开发中,代理的使用是非常常见的,但是稍稍不注意,就会造成循环引用,什么是循环引用,看图
uiview 作为子 view 加入到 ViewController 中,出于某种原因,uiview 需要持有 ViewController 的引用,比如可能某些事件需要通过代理传递进去,因此,循环引用稍稍不注意就悄然发生了,那么,怎么解决
使用 weak,
weak may only be applied to class-bound protocol types是个什么鬼,在 java 中,就是这么搞的啊,stackover 一下咯,这里发现了答案
b、连续 pushViewController,先 pushA,在 A 的 viewDidLoad 中马上 pushB,结果 B 没有出现,我的想法是让 A 作为一个过渡的页面,(因为经常有这种需求,主人态客人态的页面结构差异很大,因此我习惯做两个页面。然后通过一个导航页来跳转)。
那么原因是什么,这次,我没有搜索到答案,可能是我输入的关键字不准,对于问题的描述不够准确吧,但是我还是解决了,我猜想可能是因为,两次,push 的时间间隔不能太短,于是我这么做了
使用 timer 做一定的延时,结果,果然就解决了。所以有时候猜一猜,别怕,大胆尝试,也许问题也能解决。
c、总结一下,在有 android 开发基础上做到 ios 开发入门是比较简单的,但是,要做到 ios 开发上游刃有余,还是需要一定的时间的,那么,如何加速这个过程,只有让自己不断的痛苦,比如,去 github 上学习开源的项目,在比如,直接熟悉你们现有的项目的 ios 版本。
【腾讯 WeTest iOS 预审工具】
为了提高 IEG 苹果审核通过率,腾讯专门成立了苹果审核测试团队,打造出 iOS 预审工具这款产品。经过 1 年半的内部运营,腾讯内部应用的 iOS 审核通过率从平均 35% 提升到 90%+。
现将腾讯内部产品的过审经验,以线上工具的形式共享给各位。
在 WeTest 腾讯质量开放平台上可以在线使用。
点击http://wetest.qq.com/product/ios即可立即体验!
如果使用当中有任何疑问,欢迎联系腾讯 WeTest 企业 QQ:800024531
iOS 预审工具分四步进行预审服务
【一键扫描】只需提供 ipa 包、审核图片、审核视频、应用描述,即可在 4 小时内拿到一份完整的检测报告,定位问题的同时提供解决方案,助您成功通过审核。
【案例分享】集结 iOS 审核失败常见原因,丰富案例为您提供参考依据。
【专家服务】腾讯专家团队为您分析各种疑难杂症,提出最优解决方案。
【ASO 优化】专业优化 AppStore 内关键字搜索结果,让产品离用户更近一步。希望 App/手游在预审验收保证下,都可以快快乐乐过审,开开心心赚钱。,开开心心赚钱。