自己的iOS知识点笔记

229 阅读3分钟
原文链接: www.jianshu.com

由于公司的问题这几天开始找工作、发现很多以前看过的东西记忆都模糊了。
索性一边复习一遍总结自己入行这两年多零零散散的知识、坐车的路上方便翻阅巩固。

不具备任何指导意义、只是自己这几年的学习路线而已。

主要以OC基础为主吧、这两年自己主要的规划就是OC基础

下一年的规划是计算机基础和算法、精力如果充裕大概会再高一两个OC模块深入一下。


干活的基础

这一块决定你的工作代码会不会出现问题、毕竟都是一些经常需要用到的东西

决定你的代码是否合理易用

工厂模式相对比较重要、此外还有MVC以及各种衍生策略。

@property中所有可声明的关键字。

默认声明atomic/noatiomicweakcopy等等。
block属性声明、代理属性声明等等。

NSThread、NSOperation、GCD。

其中GCD相对重点。包括何时会开辟新线程、死锁、dispatch_semaphore、dispatch_barrier的应用等等。
GCD线程池

iOS事件传递的基础

完整的响应机制。屏幕被触摸-->IPC进程间通信(appDelegate-->runloop)-->寻找合适View-->响应链
Touch Event、UIControl、UIGestureRecognizer三者之间的关系

未必有多大用、但是因为简单所以谁都爱问

深拷贝浅拷贝copy以及mutableCopy

OC的本质、这个不了解说不过去了

swizzle类的结构方法的结构。最起码要看一遍头文件

  • 计时器

NSTimer、GCD

NSTimer为什么不准?GCD计时器的原理等等(臣妾找不到啊)。

各种所的区别

自旋锁、互斥锁、读写锁。

这个真的是每天都写的东西

优化:包括但不限于离屏渲染、缓存、异步等等。
还有复用池原理

网络模块基础

NSURLSessionNSURLConnection的区别


官方文档

很多人做了好几年iOS、却只知道几个用烂了的方法、甚至仅限于《会用》。

NSOjbect、NSResponder、UIView、UIViewController、UIControl、UIScrollView、UITableView、UIButton、UIImageView、各类NS。手势

CALayer与UIView

load 、initialize 、copy 、hash
kindOfclass/respondsToSelector与isa的关系
[[NSMutableString new] isMemberOfClass:[NSMutableString class]];的返回?
消息转发几个方法。

参考响应链。已经其与Control、手势的关系。

Auto Layout 、Safe Area 、如何让TextView自适应。
命中测试(hitTest+pointInSide。约束、布局、绘制流程。

手势识别流程、与响应链的关系。

UIControl识别流程(比如为什么Button上方的UIView会阻碍事件?)。Target-Action 机制、Tracking相关、与响应链的关系、UIControlState。

总体没什么重点、只要知道有哪些API就行了。
iOS11的新属性contentInsetAdjustmentBehavior、触摸管理

Cell复用原理、预估高度

预定义控件的懒加载特性、prepareForReuse

生命周期、ChildViewController、安全区域
UIToolBar、toolbarItems、BarButtonItem


源码

AFNetworkingSDWebImage、RAC。这三个是最基本的了。
其他的只要是想写在简历上、最好都了解过原理。


底层

决定你能和面试官聊多久吧

渲染机制、runtime、runloop、block、weak、启动、性能优化

runloop的结构:Mode[Source,Oberserver,Timer]、其中每个元素的意义与用途(mach port通信、绘制、autoreleasepool、定时器等等)
runloop的工作逻辑、与线程的关系。

子线程的自动释放池

分类为什么能添加方法却不能添加变量?(在访问方法和变量时、有何区别。)
分类如何“覆盖”旧方法
关联对象如何存储、释放
方法缓存(send_msg查找、储存、决议等过程)
swizzle实质

weak_hash表结构、释放后如何置nil。

block对不同变量的捕获处理:局部变量、局部静态变量、全局变量、__block
__Block_byref结构体的作用。

缓冲区

hashTable、NSCopying

hashTable


计算机基础

  • 内存分配

iOS程序中的内存分配 栈区堆区全局区
alloc、init你弄懂50%了吗?


OC之外的东西

网络协议、数据库、算法、其他语言