
由于公司的问题这几天开始找工作、发现很多以前看过的东西记忆都模糊了。
索性一边复习一遍总结自己入行这两年多零零散散的知识、坐车的路上方便翻阅巩固。
不具备任何指导意义、只是自己这几年的学习路线而已。
主要以OC基础为主吧、这两年自己主要的规划就是OC基础
下一年的规划是计算机基础和算法、精力如果充裕大概会再高一两个OC模块深入一下。
干活的基础
这一块决定你的工作代码会不会出现问题、毕竟都是一些经常需要用到的东西
决定你的代码是否合理易用
工厂模式相对比较重要、此外还有MVC以及各种衍生策略。
@property中所有可声明的关键字。
默认声明、atomic/noatiomic、weak、copy等等。
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计时器的原理等等(臣妾找不到啊)。
各种所的区别
自旋锁、互斥锁、读写锁。
这个真的是每天都写的东西
优化:包括但不限于离屏渲染、缓存、异步等等。
还有复用池原理
网络模块基础
NSURLSession和NSURLConnection的区别
官方文档
很多人做了好几年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
源码
AFNetworking、SDWebImage、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之外的东西
网络协议、数据库、算法、其他语言