zoukankan      html  css  js  c++  java
  • Android码农如何一个星期转为iOS码农(不忽悠)

    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/手游在预审验收保证下,都可以快快乐乐过审,开开心心赚钱。,开开心心赚钱。

  • 相关阅读:
    Android游戏开发22:Android动画的实现J2me游戏类库用于Android开发
    android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第三部分,完整代码)
    使用OGR创建dxf格式矢量数据
    mysql 数据库引擎 MyISAM InnoDB 大比拼 区别
    android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第二部分)
    mysql 更改数据库引擎
    android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第一部分)
    android 数字键盘使用
    MySQL Innodb数据库性能实践
    eclipse : Error while performing database login with the driver null
  • 原文地址:https://www.cnblogs.com/wetest/p/6868507.html
Copyright © 2011-2022 走看看