one step

UI视图:
(1)UITabView相关:重用机制的理解和运用,包括对数据源多线程的操作就涉及到数据源重复的问题
(2)事件传递&视图响应
(3)图像显示原理
(4)UI卡顿,掉帧
(5)UI绘制原理/异步控制
(6)离屏渲染
OC语言
(1)分类(实现机制原理)
(2)关联对象
(3)扩展,代理
(4)KVO,KVC(实现机制及原理)
(5)NSNotivication
(6)属性关键字
runtime:
(1)对象,类对象,元类对象
(2)消息传递机制
(3)消息转发流程
(4)方法缓存
(5)Method-Swizzling
(6)动态添加方法
内存管理:
(1)ARC
(2)MRC
(3)引用计数机制
(4)弱引用表
(5)AutoReleasePool
(6)循环引用
Block
(1)block的本质
(2)截获变量特性
(3)__block修饰符的本质
(4)block的内存管理
(5)循环引用
多线程
(1)GCD
(2)NSOperation/NSOperationQuen
(3)NSThread
(4) 线程同步,资源共享
(5)互斥锁,自旋锁,递归锁等
runloop
(1)什么是runloop
(2)mode/sourse/Timer/Observer
(3)事件循环机制
(4)Runloop与NSTimer
(5)runloop与线程之间的关系
(6)常驻线程
网络
(1)HTTP协议
(2)HTTPS与网络安全
(3)TCP/UDP
(4)DNS解析
(5)Session/Cookie
设计模式:
(1)六大设计原则
(2)责任链
(3)桥接
(4)适配器
(5)单例
(6)命令
架构/框架
(1)图片缓存框架
(2)时长统计框架
(3)复杂页面架构
(4)客户端整体架构
算法:
(1)字符串反转
(2)链表反转
(3)有序数组合并
(4)Hash算法
(5)查找两个子视图的共同父视图
(6)求无序数组当中的中位数
第三方库
(1)AFNetworking
(2)SDWebImageView
(3)Reactive Cocoa
(4)AsyncDispayKit

初级:
(1)精通OC语言基础
(2)精通UIKit等Cocoa Framework
(3)熟悉网络通信机制以及常用数据传输协议
(4)具备主流开源框架的实用经验
中级:
(1)扎实的编程,数据结构,算法基础
(2)深入理解语言机制,内存管理,网络,多线程,GUI
(3)精通常用设计模式,框架,架构
(4)良好的分析,解决问题的能力
高级:
(1)解决研发工程中的关键问题和技术难题
(2)调优设备流量,性能,电量等
(3)较强的软件设计能力
(4)对iOS内部原理有深刻理解
资深:
(1)精通高性能编程及性能调优
(2)灵活运用数据结构,算法解决复杂程序设计问题
(3)提供性能优化,日志搜集,统计分析等方案
(4)架构,模块设计

表达的宗旨:
(1)简洁性
排版清晰(2-3页左右即可)
简洁不是少,亮点,优势仍然要突出
挑选重要的,突出的表达
无关的,次要的不需要表达
(2)真实性
可以包装,但不能伪造
量化指标去说明(前后crash量的变化,线上bug数的变化,开发成本节约了多少)
(3)全面性
邮箱,联系方式等基本信息要全面
履历过的公司要全面
履历的每家公司尽量都有一个十分亮点的项目体现

涵盖内容四要素:
(1)基本信息
姓名,学校,现居,学历,工作年限,专业,电话,邮箱(最好不好用QQ邮箱有的企业邮箱可能会屏蔽掉,头像)
(2)工作经历
2014--至今 任职公司。iOS初级 负责人等
(3)项目经验
列举比较有亮点的2-3个项目
明确自己承担的角色(主导,参与,核心研发者)
项目背景描述,方案,效果
demo
主导/参与/核心参与XXX项目
背景:1.改善原油代码的臃肿,不易维护 2.需求快速迭代的开发成本较高3稍有不慎就会引发bug4......
方案:根据项目合理运用桥接,命令等设计模式对原油业务进行分层,解耦,降低代码重合度
效果:日崩溃亮<X左右;重构之后代码清晰易读 3万行代码减到2万行

(4)擅长技能
能通过多线程技术解决实际开发当中的疑难杂症
精通(熟练掌握)OC语言
掌握MVC,MVVM等主流框架,熟悉桥接,命令,适配器等常见的设计模式
熟悉feed流性能优化,理解UI从创建到渲染到屏幕上的整体流程,机制

一:UI视图:

image.png

1.重用机制


image.png

虚线部分为当前屏幕锁展示的内容(A2--A6),假设此时状态是向上滑动的中间状态,那么A1就被放进了重用池(A)里面了,如果继续往上滑动,A7就会从重用池里面去根据指定的identifier标志符取出一个可重用的cell。假如说A1-A7都是同一个identifier,那么A7就可以重用A1所创建的内存或者控件,这样就达到了复用或者重用的目的。

2.数据源同步问题


image.png

删除操作和子线程的网络加载,就涉及多线程对共享数据的访问,这就需要考虑关于数据源的同步问题
那么如何解决tableView在多线程访问和修改数据源同步的问题呢?
(1)并发访问 数据拷贝


image.png

缺点:数据源较大时数据源的拷贝 对内存的开销教大
(2)串行访问


image.png

介绍:在子线程里数据请求数据解析后在串行队列中(子线程中进行)进行新增数据预排版等同时用户在主线程删除了某一行数据,那么此时需要等一下,等串行队列操做完,再再串行队列中同步数据删除,之后再在主线程刷新UI。
缺点:在子线程处理任务特别耗时的时候,删除这个操作会有一定延时。

二.UIView和CALayer

image.png

两者的区别:
(1)UIView为CALayer提供内容,以及负责处理触摸等时间,参与相应链
(2)CALayer负责显示内容content

事件传递与视图响应机制

如:


image.png

image.png

第一个方法是返回响应的view(哪个视图响应就返回哪个view),第二个是判断触摸处是否在这个view范围内

image.png

简述:点击屏幕传递给UIApplication,UIApplication再传递给UIWindow,UIWindow就会通过hitTest返回最终的响应view,其实hitTest内部会调用pointInside这个方法来判断当前所点击的point是否在UIWindow范围内,在的话会遍历他的子视图来查找最终响应这个事件的视图,遍历的方式是采用倒序的方式遍历,也就是说最后添加到UIWindow上的视图会最优先遍历到。在每个UIView里都会调用HitTest方法,最终会返回最终的响应视图hit,如果有值的话那么这个视图就作为最终的事件响应视图,就结束了事件传递的流程。 假如没有的话,在window范围内的话那么UIWindow本身就作为事件响应视图。如果也不在当前window上 那么就会返回nil,则会被丢弃,忽略该响应


屏幕快照 2019-08-23 下午1.58.21.png
代码实战

方形button 只让圆形区域接受事件响应,红色不接受(p4:37)


image.png

视图响应流程

image.png
image.png
image.png

image.png

简述:点击空白处,最先由C2接收这个事件,如果它不处理的话 会传递给下一个响应者B2,B2也不处理的话 会传给父视图A,若A也不响应 那么会沿着响应链一直往上传递直到传递到UIApplication,如果最终没有任何视图去处理这个事件的话,那么这个事件就会被忽略掉,不做任何处理

图像显示原理

语言属性

image.png
分类(Category)

你用分类做了哪些事?
(1)声明私有方法:定义一个分类 把头文件放在.m文件 进行声明和定义,对外不暴露
(2)分解体积庞大的类文件
(3)把Framework的私有方法公开
分类的特点:
(1)运行时决议:编好分类文件后,是在runtime在分类中添加的内容 再添加上去
(2)可以为系统类添加分类
分类中都可以添加哪些内容?
(1)实例方法
(2)类方法
(3)协议
(4)属性(只声明了set方法和get方法,并不是添加实例变量)


image.png
image.png

代理

image.png
image.png
image.png

通知(NSNotification)

image.png
image.png
image.png

image.png

KVC(键值编码技术)

屏幕快照 2019-08-28 下午2.19.37.png

方法里面的key是没有任何限制的,如果在我们知道一个类或者实例 他内部私有成员变量名称的话,我们在外界可以通过已知的key对私有成员变量进行访问和设置的。这个角度KVC会破坏面向对象思想的!

########value for key的系统实现流程


屏幕快照 2019-08-28 下午2.44.40.png

访问器是否存在的访问规则
如果实现了下面其中一种get方法即可认为他的访问器方法是存在的


屏幕快照 2019-08-28 下午2.38.33.png

实例变量的说明
同名的同名变量或相似名称的成员变量---实际上就涉及到成员变量是哪个的问题 有些疑问


屏幕快照 2019-08-28 下午2.44.06.png
setValue forkey调用流程
屏幕快照 2019-08-28 下午2.47.24.png

属性关键字

(1)读写权限:readonly,readwrite(默认)
(2)原子性:atomic(默认),nonatomic
atomic可以保证赋值获取是线程安全的,但是不包括操作,比如atomic修饰是一个数组,对数组的赋值和获取是保证线程安全的,但是对数组的元素的添加和移除是不在atomic的负责范围之内的。
(3)引用计数 retain/strong(用来修饰对象),assign/unsafe_unretained(既可以修饰基本数据类型又可以修饰对象类型,其中第二个在MRC中使用频繁)
(4)weak
(5)copy

assign:
悬垂指针:assign修饰的对象 被释放之后,assign指针仍然指向原对象内存地址,这个时候继续访问的话 就会因为悬垂指针的原因 产生内存泄漏


weak:
屏幕快照 2019-08-28 下午3.04.07.png
test:

assign和weak的区别:
assign和weak都不改变被修饰对象的引用计数。assign既可修饰基本数据类型也可修饰对象,weak只用来修饰对象,两者所修饰对象被释放之后 assign修饰的会仍然指向原对象的内存地址,而weak修饰的会自动置为nil

copy


屏幕快照 2019-08-28 下午3.16.20.png
屏幕快照 2019-08-28 下午3.20.15.png
屏幕快照 2019-08-28 下午3.23.45.png

屏幕快照 2019-08-28 下午3.25.48.png

屏幕快照 2019-08-28 下午3.28.35.png

屏幕快照 2019-08-28 下午3.31.36.png
屏幕快照 2019-08-28 下午3.36.21.png

屏幕快照 2019-08-28 下午3.38.43.png

(1)分类实现原理:
是由运行时来决议的,不同分类当中含有同名分类方法谁最终生效取决于谁最后参与编译,最后参与编译的同名分类方法会最终生效, 如果分类当中添加的分类方法恰巧是宿主类方法中的某一个方法时,分类方法会覆盖宿主类的方法。
(2)KVO的实现原理:
是系统关于观察者模式的一种实现,KVO运用了isa回写技术来动态运行时去为某一个类添加一个子类,重写它的setter方法,同时把原有类的isa指针指向新创建的这个类上面
(3)能否为分类添加成员变量:
关联对象这个技术去添加成员变量

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容

  • 谁也不知道末日何时来临并以何种方式爆发,如果有生之年因为核弹真的来到废土世界,你会选择随着旧世界一同消亡,还是带着...
    你好沁阅读 161评论 0 0
  • 昨天晚上花五個小時參加一個不得不去的聚會,聽著大家你一言我一語,把自己抽離出來看著這一切,看著自己和他們的互動,...
    天真樂阅读 313评论 0 0
  • 开始偶尔读写书的日子后,常见到有读者说读《活着》。茫然于魔都忙碌的生活中,于昨日无法入睡的夜晚,读了这本《活着》。...
    茉茉雅集阅读 430评论 0 0
  • 冬至已至,但愿幸福已至 人山人海,拥拥嚷嚷 愿所有的好友亲朋 接下来活的随心所欲一点 不偏不倚,恰如其分 愿往事如...
    倚南墙阅读 410评论 2 2