-
2.
Category
分类的底层实现原理 - 链接 -
4.
@autoreleasepool
自动释放池的底层实现原理 autoreleasepool -
6.
KVC
简直编码的底层实现原理使用. 链接 -
8.Runtime的
Swizzle
黑魔法方法交换和应用场景 - 链接 -
9.Runtime的
属性关联
使用 - 链接 -
10.OC
消息发送
和转发机制
原理 链接 -
11.iOS
事件响应链
和事件传递原理 链接 -
12.iOS中的多线程编程、主要是
GCD
的底层实现、 GCD异步函数+并发队列+信号量实现同步操作、GCD线程组的使用、GCD线程栅栏的使用、进程
与线程
的区别?进程间的通讯方式?- 多线程 -
14.UIView的渲染和屏幕显示图像的原理以及卡顿产生的原因和解决方案 链接
-
17.iOS中的
数据持久化
的方式有哪些? -
18.沙盒机制
-
20.iOS中的网络编程 NSURLSession、AFNetworking的实现原理和网络数据缓存以及
Socket
网络编程的原理、GET和POST的区别 -
22.iOS中的锁机制,各种锁的优缺点?锁的作用!链接
-
23.
ReactiveCocoa
(RAC)函数响应式编程框架的原理以及配合MVVM设计模式的使用 -
25.实现一个
单例
。单例的优缺点 -
26.
SDWebImage的
底层实现原理 -
27.iOS中的加密算法底层实现和使用、对称加密:AES,DES,MD5 、非对称加密:RSA
-
28.代理,block,通知,KVO的区别与联系
-
31.iOS组件化开发方案
-
32.iOS原生与H5的交互、
JavaScriptCore
的使用 -
33.iOS的基础动画、
CoreGraphics
和QuartzCore
-
34.iOS中的传值方式
-
35.Runtime如何实现 weak 属性 weak
-
36.OC对象的本质 链接
-
37.const,static,extern关键字的区别 链接
-
38.最快让你上手ReactiveCocoa之基础篇 链接
-
39.iOS的小技巧总结,绝对有你想要的 链接
-
40.iOS无埋点数据SDK的整体设计与技术实现 链接
-
41.iOS 性能调优,成为一名合格iOS程序员必须掌握的技能 链接
-
42.微信,QQ这类IM app怎么做——谈谈Websocket 链接
-
43.iOS 模块分解—「Runtime面试、工作」看我就 🐒 了 ^_^. 链接
-
44.OC最实用的runtime总结,面试、工作你看我就足够了! 链接
-
45.史上最详细的的iOS之事件的传递和响应机制 - 原理篇 链接
-
45.23种设计模式及案例 链接
-
46.手把手教你利用Jenkins持续集成iOS项目 链接
-
47.iOS MVVM+RAC 从框架到实战 链接
-
48.iOS即时通讯,从入门到“放弃”? 链接
-
49.iOS 图片加载框架-SDWebImage解读 链接
-
50.iOS,面试必看,最全梳理 链接
-
51.iOS组件化思路-大神博客研读和思考 链接
-
53.2017年5月iOS招人心得(附面试题) 链接
-
54.2018-iOS面试题<一> 链接
-
55.玩转iOS开发:装逼技术RunTime的总结篇 链接
-
56.iOS面试珠玑 链接
-
57.超详实Git简明教程与命令大全 链接
-
58.iOS秋招面经---我是如何通过多家公司的面试 链接
-
59.面向对象设计的六大设计原则 链接
-
60.2018年 iOS 面试心得 链接
-
61.出一套 iOS 高级面试题 链接
-
62.分分钟让你理解HTTPS 链接
-
63.git基本操作,一篇文章就够了!链接
-
64.面试带你飞:这是一份全面的 计算机网络基础 总结攻略 链接
-
65.HTTP从入门到放弃 链接
-
66.一个渣硕iOS春招总结 链接
-
67.iOS 性能优化总结 链接
-
68.程序员也想改 Lottie 动画?是的! 链接
-
69.八大基础排序总结 链接
-
70.iOS 组件化 —— 路由设计思路分析 链接
-
71.《图解HTTP》知识点摘录 链接
-
72.一篇文章,教你学会Git 链接
-
73.iOS App 稳定性指标及监测 链接
-
74.揭秘 iOS 布局 链接
-
75.iOS常见基础面试题(附参考答案) 链接
-
76.移动端 iOS 年终工作总结-纯干货请自备酒水 链接
-
77.iOS多线程:『GCD』详尽总结 链接
-
78.iOS 保持界面流畅的技巧 链接
-
79.图解TCP三次握手与四次分手 链接
-
80.Token 认证的来龙去脉 链接
-
81.YYCache 源码解析 链接
-
82.深入分析MVC、MVP、MVVM、VIPER 链接
-
83.面试 -- 网络 HTTP 链接
-
84.面试 -- 网络 TCP/IP 链接
-
85.知道这20个正则表达式,能让你少写1,000行代码 链接
-
86.JS正则表达式完整教程 链接
-
87.蜂鸟商家版 iOS 组件化 / 模块化实践总结 链接
-
88.iOS 学习资料整理 链接
-
89.2018.4月份iOS面试经历 链接
-
90.来来来!关于iOS基础总结咱俩好好唠唠 链接
-
91.IOS的性能优化 链接
-
92.iOS App 签名的原理 链接
-
93.深入理解RunLoop 链接
-
94.面向切面编程之 Aspects 源码解析及应用 链接
-
95.iPhone安装包的优化 链接
-
96.今日头条iOS客户端启动速度优化 链接
-
97.校招攻略:43份优质面经汇总(iOS开发) 链接
-
98.iOS绘图教程 链接
-
99.Core Animation编程指南 链接
-
100.iOS单元测试(作用及入门提升) 链接
-
101.iOS UIWebView与WKWebView 链接
-
102.iOS多线程详解 链接
-
103.iOS Core Animation详解 链接
-
104.iOS Quartz2D详解 链接
-
105.iOS instancetype和id区别详解 链接
-
106.@property参数详解 链接
-
107.iOS Runtime之三:成员变量和属性 链接
-
108.iOS 视图控制器转场详解 链接
-
109.ReactiveCocoa 讨论会 链接
-
110.写iOS SDK注意事项 链接
-
112.+load 与+initialize的区别 链接
-
114.iOS下音视频通信-基于WebRTC 链接
-
115.iOS中UIWebView与WKWebView、JavaScript与OC交互、Cookie管理看我就够 链接
-
117.iOS日常工作之常用宏定义大全 链接
-
119.多年iOS开发经验总结 链接
-
120.iOS 万能跳转界面方法 链接
-
121.如何快速的开发一个完整的iOS直播app 链接
-
122.3分钟实现iOS语言本地化/国际化(图文详解) 链接
-
123.Texture 布局篇 链接
-
124.新大陆:AsyncDisplayKit链接
-
125.理解 iOS 和 macOS 的内存管理 链接
-
126.iOS显示性能优化过程讲解 链接
-
127.iOS数据安全-编码和加密算法 链接
-
128.iOS开发系列--代码混淆 链接
-
129.隐式动画和显式动画 链接
-
130.搞iOS的,面试官问Hash干嘛?原因远比我下面要介绍的多 链接
- 1、定位好核心功能
- 在做一款高性能的优质APP之前,得先想好这款APP需要解决用户哪些实际的需求,然后提炼出这款APP的主要功能,一个APP并不需要花里胡哨的功能,核心功能才是需要定位清楚的关键。
- 2、做好应用架构评估
- 在定位好核心功能之后,接下来就要做好应用架构评估。一般不匹配的技术选择、低效的网络配置、可扩展性的限制、不符合移动端的UI设计等都会影响应用程序性能,所以做好清晰完整的APP架构规划才有利于构建用户所需的系统功能。
- 3、养成良好的编程习惯
- 良好的编程习惯可以提高程序的执行效率,让应用开发事半功倍。程序员可以从程序结构模块化、命名规则化、注释简介明了化、文本格式易读化等方面让程序结构清晰、合理,使得程序代码易于读懂跟修改。
- 4、加速程序启动跟响应时间
- 大家日常中都使用过APP,APP的快速启动与响应往往会让我们改观它其他方面的不足,所以程序员应该在后台线程上花点功夫,将操作从主线移动到一个单独的线程中,缓存从磁盘存储中打开和阅读,客户端证书在后台加载。
- Cookies反序列化和解码放在后台,相信通过这些改变,UI将会更加快速的出现在屏幕上。主意,用Xcodedebug时watchdog并不运行,一定要把设备从Xcode断开来测试启动速度。
- 5、使用最新版本的软件开发SDK、API
- 随着安卓、iOS平台的不断发展与更新,软件开发平台的性能会得到不断的改进,可以帮助程序员编写出运行更稳定、响应更迅速的应用程序。
- 6、使用SuperWebView,让APP支持动态更新
- 对于已经上线的app面对更新新功能时, SuperWebView功能支持动态更新,这样的好处在于可以不通过应用商店的审核,用户无需重新下载APP,即可受到新功能的更新信息。
- 7、使用StrictMode调解android性能
- StrictMode是用来检测程序中违规情况的开发者工具,意思是严格模式,程序员最常用它来检测主线程中本地磁盘和网络读写等耗时的操作,使用此模式,当系统检测出主线程违例的情况会将应用的违例细节暴露给程序员,方便程序员优化和改善程序。
- 8、使用Hierarchy Viewer调试应用布局
- Hierarchy Viewer会让你选择设备或者模拟器上正在运行的进程,显示出它的layout的树型结构,模块上的交通灯代表了它在测量、布置和绘画时的性能,帮助你找到瓶颈部分,从而改善性能。
- 9、优化应用耗电量
- 当用户发现一个APP很耗电时,用户往往会选择卸载掉应用来保存手机电量,根据调查显示,当一个APP中有使用到GPS定位、网络传输、屏幕亮度、CPU频率等时就会非常耗电,所以程序员应该对应用优化这几点以降低耗电风险。
- 10、优化应用布局,确保布局简单、浅层
- 使用lint工具查看view层级有哪些地方可以优化,帮助你找到不必要对控件镶套以及所见布局资源对方法,尽量减少资源的使用,控件越少、布局层次越浅,性能就越好。
- 11、规划应用的离线体验
- 如果当用户连接不上Wi-Fi或者移动信号的时候,你的APP依然可以使用,那么一定会在用户心里添加不少的印象分,所以在规划APP应用时,可以考虑将这一设计规划其中。
- 12、发布之前尽量少用调试跟诊断
- 如果你的应用程序已经开发了一段时间,你的应用程序中有可能已经被嵌入了一些日志跟调试代码,这些可能会给系统的性能带来一定的影响,因此建议尽量少用或者禁止使用这些功能。
- 13、缓存
- 通常来说,一个APP是由多个组件构成的,在这些组件中都有缓存的影子,当缓存后的数据再次被调用时就可以直接提供数据,提高数据的响应速度。因此缓存是改善应用程序响应速度和降低CPU负载的有效方式。
- 14、充分利用云移动
- 充分利用云移动传输来传递服务器与数据中心的移动内容,因为服务器与数据中心与终端移动用户之间有绝对的地理优势,不过在做出选择之前一定要充分考虑到双方的负荷量及地理位置。
- 15、整合资源
- 对开发者来说,将Javascript代码和CSS样式放到公共的文件中供多个页面共享是一种标准的优化方法。这个方法能很简单的维护代码,并且提高客户端缓存的使用效率。