swift swizzling
- 交换两个方法的实现 -> 如在系统类的函数里增加统计、日志等代码
- 增加类的方法或者变量 (修改framework的实现)
- 获取类的所有方法和属性
- 利用热更新技术解bug
(selectors, methods, implementations的概念)
(framework里可以通过extension uiapplication,在next里实现)
swift的优势
- swift容易阅读和写:如类的初始化少了alloc、init,拼接数组、字符串,方法调用.等
- 更易于维护:文件数量少,只有.swift, 而不是.h+.m
- 更安全:optional类型,?!
- 函数式编程,减少大量代码
- 更高效:swift语言引擎
缺点:swift语言不稳定,升级语言版本导致工程大量改动;无法直接和c\c++混编;(其他如:开源、技术文章都没问题)
提效:使用合适的工具,合理利用第三方资源
- cocoapod、maven
- jenkins 持续集成
- jira
- 单元测试
- 组件库
- react native实践
- 函数式编程
提升app质量:规范开发流程,提升团队成员编码能力和审美能力
- 代码质量
- 代码解耦:组件化
- 规范化:编码规范
- 代码走查
- 踩坑记录总结
- 美观性
- 制定规范,统一风格
- CI:紧跟ios的风格变更
- 易用性(薄弱:缺少团队支持)
- 用户点击数据统计
- 参考同行
- 踩坑记录
- 代码质量
团队能力提升:
- 专题培训
- 读书会
- wiki:环境搭建、工具分享、技术积累
性能优化:instruments
可能会影响性能的原因:肆意调用数据库而没有用cache、复杂UI大量使用约束、离屏渲染、像素混合- 非主线程处理
- 异步处理事件
- i/o性能优化:
- NSCache
- 控制 App 的 Wake 次数:通知,VoIP,定位,蓝牙等都会使设备从 Standby 状态唤起。
- 及时关闭摄像头、电筒等耗电大户:如二维码扫描等页面
- 预加载资源,如图片、网络数据等等
- 对大图片进行缩放
- 降低布局的复杂度
- UIView的创建代价很大,一些可以复用的view可以cache。如tableview的cell
- 缓存:uiview、图片、布局、网络数据
参考:
深入剖析 iOS 性能优化
ios性能优化探索
iOS性能优化系列篇之“列表流畅度优化”
gcd: 异步执行回主线程\qos\after\DispatchGroup\Semaphore\Barrier \串行队列\并行队列
Swift4.0 - GCDCF:core foundation 是比较底层的C语言的库
runloop:保持线程不退出
多线程(nsthread、gcd、phtread)内存管理:
引用计数(强引用,弱引用)
场景:timer、block、gcd、代理、泛型swift特性语言:lazy、willset\didset\get\set、嵌套函数、protocol的组合、
animation
AB测试
ios开发高手进阶
Title:ios开发高手进阶
Author:Lynn Cheng
Created:2018-09-04, 15:40:12
Updated:2019-07-01, 13:36:22
Full URL:http://lynncheng.github.io/2018/09/04/ios高手进阶/
License: "CC BY-NC-SA 4.0" Keep Link & Author if Distribute.