讨论IOS开发以及自己的经验
1. 基础知识
基础知识有时在开发中不怎常用,理由是现在有很多三方工具,比如网络AFN,数据库FMDB(当然有直接存储模型model的工具)等等。快速开发中基本不怎么常用。
但是在一些大公司基础知识比较重要,不用这些三方工具,都是分装自己的轮子上传到git上,然后用cocoapod管理,这样的话就很重要了,对基础知识要求很严格,比如:网络底层累NSUrlSession, GCD多线程,Runtime运行时,离屏渲染,刷帧,CPU优化等等
面试找工作时也很重要,因为面试官一般都是基本不问你经验,不看你写的代码质量和稳定性,拓展性;只知道问一些基础,而且看你的外表形象,看你顺眼就录取;
2.开发注意事项
一般刚入行,或则开发了3,4年的iOS,虽然功能都能实现,但是还是做不到特别细心,代码特别稳定的开发,偶尔由于后台数据变化,或则自己的代码不够严谨出现奔溃,在这里建议写代码是一定要考虑全面,比如写一行代码时试着假象一下,如果这个数据变化了我iOS端会不会出现奔溃,会的话就多添加一个if(){}else{}判断在异常里边弹个提示或则不弹提示,记住考虑越全面判断越多代码越稳定。当然我们一般都会写几个工具类一行代码搞定。这个写出来的代码绝对不会因为啥么因素导致奔溃情况发生,因为奔溃是我们最严重的bug.
当做到代码稳定性特别好的时候,奔溃不再发生,用户可以正常使用的时候,接下来我们就要想办法优化代码,优化内存,优化界面。在这里我简单的说几点:耗时的任务一定要开辟一条子线程,执行完任务回调到主线程,或则同时放置一个加载框也可以。 内存优化的话平时自己注意点一般不会发生,Xcode也有自己的检查工具。我相信大家都会用也会看, 我在这里说一个最笨的方法分享一下做一个nsobject父类,重写dealloc方法,项目所有类都继承它,当你切换界面时如果一个界面没有走这个log日志那么一定是内存没有释放,在这个界面找问题就好!还有一个就是内存泄露,当有大量图片或则一个多次循环等情况家就会造成内存泄露,这里我简单描述下这两个问题的内存泄露,大量图片是一定要用collectionView,或则tableView,而且一定要做成cell共用,如果不能共用刷的多了一定奔溃,这个问题需要注意;另一个就是循环导致的内存泄露了,针对这种情况需要手动添加释放池加快内存释放!还有就是界面优化在app稳定运行用户体验基本没问题的基础上,我们接下来需要优化界面:首先就是避免离屏渲染因为这个很容易导致掉帧,也就是界面卡顿,特别消耗GPU。也可能是滑动界面过程中大量开辟内存创建新的对象这样的话特别消耗cpu, 也可能是耗时任务没有放在子线程处理这样的话也会导致界面卡顿,出现界面不流畅的话希望找个专门优化界面的文档一步步认证排查!
如果写出的代码特别稳定,内存也优化的没问题,而且界面也特别流畅。我觉得一个比较完美的app就开发完成了!
3. 项目结构
这个问题是最重要的,也是最具有技术含量的。但也是很多人包括面试官最容易忽略的一个问题。一个结构好的app项目,可拓展性,可维护性特别高。就算添加了很多新的功能和需求,代码逻辑依然那么清晰,调试bug只需要到自己开发的固定模块里边修改就好!而且想做一个功能特别多,用户体验好,代码稳定的app,项目结构是重中之重!
我觉得很多干的年限不长的iOS开发,最后导致离职的原因是“TMD,一直改代码一直加需求功能”,其实我们不妨想一想是不是自己的开发思想缺少进步,导致代码一坨坨的,最后自己都分不清绿豆几颗黄豆几颗了!而且只要一动代码很多奇诡的bug都会向你拥抱,最后维护都困难别说继续开发了,只能闪人了!当然我也烦无理由的,没必要的新需求,但是做了这一行我们也许能做的就是把自己的代码模块化,代码清晰,可拓展性特别好!这样的话你就可以再也不怕新需求了,哈哈😄
这里说一下代码结构自己的认识,最基本的机构有mvc, mvvm两种常用的!当然我觉得不管用哪种你要把代码写死都很容易,这点大可放心😄, 我们应该做的就是功能模块化。一个功能一个模块,然后再把一个模块按分工分成多个小模块, 两个或两个以上地方用到的同一个或则相似的功能我们完全封装一个工具单独抽出来。为了拓展性我们也可以用代理delegate做参数传递,这样的话可以降低耦合性!当然如果是很大的一个独立功能我们完全可以打包framework静态库上传git用cocoapod管理。总的来说就是保证代码层次分明,面向对象思维~谁的事情谁处理,谁负责!
开发了7年iOS第一次写博客,希望大家不要笑我,天外有天人外有人,哪里说的有缺陷希望各位帮我指正一下!希望认识更多同行一起进步!
转载自CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/gewanping1/article/details/112060840