00:05
好,OK,那么刚刚我们是不是在这个地方已经讲完了关于编优化的一些小细节的点嘛,那么接下来我们在整个流程里面,我们会得出什么呢?就是他会走的流程是什么呢?哎,我see lock就会找这个流程,那么走这个流程我们就跟进去啊,一步步跟啊,一步跟这个地方的话不是重点啊,啊这这个地方就开始重点了啊,这个所有的代码里面就会得到了什么呢?就是这个地方方法最重的区域啊,就是因为我们在这个流程,大家还记得吗?这个流程是跟什么,是跟的是我们当前的。Lock流程嘛,是不是lock的流程就是到底他是怎样开辟内存的啊。对不对,好是直接开别的群吧。对不对,好,那么接下来就会有什么呢?诶,有非常非常重要的三个方法,第一个就是什么呢?Size,第二个方法为什么呢?就是当前的see a lock,第三个方法为什么呢?第三个方法为我们当前什么呢?In it,呃,Instant is all啊,那么很多同学可能会问到关于住啊,因为现在苹果已经被弃了,住明白,所以说一般这种情况是很少很少会去找了。
01:14
因为说早就在IOS8,应该在18还是几啊,就已经废弃了住啊,就废弃了住,所以说这个流程就不用看,也不用过去关心,如果有人问到了关于住的话,你就明白一个点,他其实说白了,早期的那时是通过住的那存进行申请出来的。明白。最内心是出来早就废弃了,不用管好不好不用管,一般如果说除非就是这个开发人员,至少有什么呢?呃,至少通过,呃,至少有开开发过程呢,呃呃,那个MRC就是开发个MRC啊,像我这种啊好不好,所以一般流程都会找扣号,那么我们当前啊,不要看看这个东西的,看这个东西你会发现很难受,那么我们当前在这个地方已经给大家总结到位,就是当前的流程里面就会通过create里面就会得到非常非常三个重要的方法。
02:06
三个的重要方法里面,123看到没有,老师这个图画的怎么样,还行吧,是吧,你看顾小师的啊,对于艺术的品味还是挺高的,那么问题来了,问题来了什么呢?这这三个方法分别做了什么呢?啊,画图用什么工具?就是keynote好不好是吧?来这三个方法分别做了什么?为什么它这么重要呢?为什么这么重要呢?来,请听我的解释,那么其实我们说白了耳聋,可这工作它是回旋方法吧,它最主要的功能是什么?最主要的功能是什么?是不是开辟内存啊,我们在整个logo打印出来这个对象里面发现发现它是一个LG person的,然后一个指针地址吗?问题是我们在一个点当前这个方法就是我们三个核心观点,就是你要去开辟的时候,问题是你要开辟多少内存,你是不是应该告诉系统第一点你是不是应该知道。
03:01
诶什么呀,要开辟多少内存,能不能想到,你是应该告诉他们好,第二步是什么呢?第步是什么呢?就是诶你怎么去申请。去申请。内存吧,是吧,第三个方法我们有个问号,有个问号对不对,那么我们如果说想研究这些东西的话,是不是意味着我们就得跟流程下去啊。吃的跟牛垂下去。对不对,跟你下去好,那么这个时候我们就是稍微点击一下好,那么那么我想问大家,你先从哪个地方开始入手。这就是散步。先从第一步开始吧,能明白你要开辟多少内存吧,是不是开辟多少内存吧,对不对哦,那么这时候我们接下来做一件事情,发现啊,我们在前进行延时,那个赛因赛里面就进去,然后什么呀,把pass的,然后什么呢?然后咔咔整了一大堆,整了一大堆啊好整了一大堆之,然后就出来了。
04:05
整一出来了,然后这个地方就做了一个这么个事情,好,那么老师我这个地方我看的不太懂,你怎么会进到这里面呢?老师说白了啊,你还在意淫,什么叫意淫呢?就是你说这么进去就这么进去啊,但是这个代码是否真的无理所说的会找这个8PASS还是找这里呢,谁也不知道。谁也不知道对不对,谁不知道啊,那么怎么办?老师,你能不能把这个代码运行起来,让我们更加直观,我们来报名不就是想到学习的更快吗?来金牌讲师来就告诉你怎么玩这个代码,那么在过程中我给大家配置好了,怎么呢,整个的这个代码,这个代码我们把它关掉,那么接下来我们通过一个什么呢?就是呃,Lo的流程分析,通过一个什么呢?可以进行调试的源码的这个家伙来进行工作,什么意思啊,我就把它运行起来,你明白吗?就是一步一步走,这样是不是更加关键啊,更加直观,而来我们点击运行。
05:09
作业来了是吧?好,来当前看到没有building啊,我会在课后会把这个工程发给大家以及配置文档,那么这个配置的区啊,在哪里能够配置呢?大家可以移步到我相应的什么呢?呃,绝经。决定在这个地方,我的文章里面就会有一个什么呢,呃。在哪儿?好,最新没更新来,这是756的啊756,但是我这个地方给的大家一个什么呢,就是一个地址,这地址什么呢?就是给他的地址上面可以下781,那么配置的流程大同小异,只是局部优化性啊,改一下就行了。直播局部优化改一下就行了,好不好,那么大家可以通过给他们可以直接去下载,也通过今天晚上各的资料可以下载到,也可以自己去配置一个,也可以自己去配置一个好不好,来酷C老师的决心。哎,你这是不是小号故意让我打一波广告啊?
06:02
啊,你说是不是好,来来我们当前继续往下走,那么当前流程是不是就进来了,那么我们当前来回到我们当前领导来这个地方嘛,我们就不再看汇编了嘛,汇编是不是一件很恶心的事情啊,来给它关掉关掉啊。关掉,我们把所有的一些断点呢,全部该干掉的就干掉了啊,呃,这都是我课前准备的一个环节。可以准备的环节啊。那么接下来我们在这个地方打下两个断句啊。大家能问题啊,是不是来了这款代码了,来了这款代码的话,我们大家去点击进去吧,是啊,应该扫不这里面个流程就进去啊,进去我们就在局部地方,就呃这些地方我们就非常清晰了,我们就不用管了,我们就直接来到什么呢?来到我们相关核心的地方,明白吗?看见有来相关合约地方,来看他是否能来到这里,来见证奇迹的时候来别眨眼睛。
07:08
一切的一切,还有谁,还有谁?45度仰望天空,该死我这无处般的魅力啊,我的天呐,你看,如果有了这份源码的话,你接下来你去探索。嗯哼,我想问大家。好。是不是非常容易去玩了吧,整个流程清晰易懂是吧?酷CI老师糟老头子一边站是吧?好,那么接下来第一个作业,今天晚上第一个作业请注意,请根据我们当前的哎,我们当前的这个源码,请。书写或者绘制整个的流程图。明白吗?Rock的流程图,它还有一些什么样的情况?来,今天晚上作业,来,我拿个笔。就是call lock的流程图,呃的流程图,听明白了吗?
08:02
呃,可以通过什么呢?你可以通过一些什么呢?其他一些软件都可以,你们自己慢慢去查好不好就慢慢去查好不好,你们可以群里面去分享啊,随便你们好不好,你可以用什么呢?你手写绘手绘版都可以,好吧,好配置的那些好不好都行,好吧,随便你们作业请提交上来提交啊,成一个在线版的,或者你拍个照也可以啊OK,好,嗯,那么明白了这里之后,我接下来继续往下面找啊。明白了这点之后,首先我们来为来验证一下啊,所以第一点我们当前进来的一个家伙是谁呢?是不是通过一个类啊,好来是LG person,没错的啊,没错的啊哦,没错的,当前是不是LGLG是不是就会来到这个地方,那么请看这个地方,请看这个。Base为零。XP的是不是为零,那么XP的时为零的话,我们当前是不是点击进去,点击进去是不是来看当前是在哪一行代码吧,点击走进到这里面去吧,是不是catch fast当前这个家伙好点击。
09:07
进来了吧,进来的话就会开始聚会去判断判断什么呢,来看啊。注意看这里,看看人家明明是来到发的啊,不是走到下面啊,我刚才是已经进入过了啊,来当前就会开始去走,是不是来下面。来下面来下面就会判断这个流程,这个set会去判断这个谓语,这个谓语,这个谓语是怎么流程出来的呢?这个谓语是根具一个Fla,这个flax来自于什么呢?来自于我们当前这个类的标识嘛,这类的标识嘛,里面就比如说我们经常会发现有没有听过什么呢?比如说呃。什么呃或什么医生有没有听过这个说法?有没有听过no point医生呢这个说法呢?来听过这个说法容易,是不是因为整个这个工作是不是他是一个医生,医生是不是一个指针。这个指针结构啊,指针里面,这个指针在二六十四里面有总共有多少位,这个64位啊,64位意味着是不是很多。
10:08
是不是很多,因为这存储内容很多吧,还有很多标识位很多里面,那么这也是我们在下节课会主重的会去分析和讲解的,那么只是告诉大家它会标识位不同,我们进行语算的所有东西来进行判别,判别之后我们就会得出一个什么呢?来得出了一个S等于16。等于16,那么这个16是怎么来的嘞?它会不会变呢?就比如说我当前LG person是不是在哪,那么我会不会变成其他的嘞,那我也不得而知,我也不得而知,但是我们先跟着16就进来,16加X加C等于零吧,然后减去这个家伙吧,来,我们把这个东西先给大家看一下,等于什么,是不是零叉800。是不是零差800是等于八个直觉吧。等于吧,这个地方注意听啊,你们现在晚上很多东西都是错误的啊,都是错误的,因为很多东西已经过时了,他没有标示8CATCH的什么开的这个什么这个。
11:09
明白。没有没有讲这个东西的啊,没讲这东西的原因什么,就是因为很多都是过程版本,尤其这这段时间,苹果对于整个catch的缓存做了很大的优化。来进行开始进行呃处理,然后接下来就会到一个诶ENERGY16是个十六十六,然后我们接下来我们就会诶移步过去来了吧,来这里话你会发现是不是等于八,所以原来这个地方是不是判断等于16 16是不是减去零,再减去什么呢?八是不是等于八,这个八就明白了吧。明白了,你说吧。是不是等于八好八过来之后做了一件事情,做了一件事情什么呀,等于差什么呢?加上15啊,然后什么呢,与上这个什么呢,等于15,这什么意思啊。来这个告诉我什么意思。来这什么意思啥意思啊,来这是一个算法。
12:03
这算法叫什么呢,就叫什么呢,内存对齐,字节对齐。字节对齐对漂亮18的倍数吧,来这飞同学,那这个手手放o oo同学,是字对齐里面的16字节对齐啊。吃石榴子这剧情。是十什么意思呢?你看我当前的八,八,加之我们接下来加上15,八,这是什么?然后雨上飞的十与上飞的15。啊,那么怎么办呢?呃,我们给大家算一下好不好。我要计算机给他算,还是直接通过呃索贿的形式给他进行计算?啊,大家想要哪一种计算的方式。大家想想哪准确说法是?哦呃,我就直接,嗯,好,我就在这里计算了,好来我们再来直接计算啊。好,我们就是计算。
13:04
哦,还原当别跑不了了这个代码。好,来,首先一点,我们把它。呃,这种。我还上给它算一下,因为有很多同学还不太那么理解哦,那比如说我们换一个简单一点的,比如说我们现在是八,我们把它换成一个什么呢?换成。换成12好不好,换成12 12的他的二进制是怎么表达?是不是0000,然后是000,然后没000,是不是0000,然后什么呢?1100是不是的。呃,二得零,二得一,二得二,二得三等于八加四吧,是不是等于12。是不是,然后接下来我是不是加上等于15啊,我们就直接把它什么呢。呃,正好讲讲微运算。你们还需要一定去去听这个问算吗?好,那么接下来我们12是不是开始开始加,加上来的话,我们当前我们就这把12就是我们取的吧,就等于四加什么呢?四加四加十十五好尴尬呀,这个地方呃。
14:17
这个地方的话,我就。我不能说花12啊。我不能换绳啊,我们换一个小一点的。我们就P一下吧。S。我们慢慢讲啊。哎,首先把地点把这个东西搞明白,什么叫做3D,是不是等于15等于一个大小啊,接下来这个地方就是我们比如说现在是八。加上15等于什么呢?等于二十二十三,那么23的话就是,23的话就是,然后变为一。呃,十二十二加了16。
15:01
16。12加16 16的话加加什么呢?加七就行了,加七。是不是?明白是不是加七。OK。十是不是?明白吧,是不是变成这样,然后我们把十五十五是不呢,000000。哦,000015的话,就是一是吧,没问题吧,是一好,然后接下来把这个家伙进行什么呢?取反吧。收取版。出去吧。明白。收吧。好不好把它取反。一。一。我以为这个地方不用讲的啊,我都不用背的。这个地方是15,这个地方是15的取板,然后什么呢,把它换过去。
16:03
OK啊,15的去办。说了是吧,然后接下来是不是取啊取吧,好,那么就是0000000。0001,然后什么呢?哎,然后这一次取00000,是不是那么就会变为什么16吧。对不对,看到没有。好,那么我不知道你们有没有观察到一个细节啊,就是我当前这一步啊。好,这一步到这一步的一个过程,有没有观察到一个小小的细节?看。汉朝有没有细节?是不是我们把这个过程中,哎,我们就直接不用这个对形好看一点,看到没有,我们在过程中如果把它进行取,反之来进行语算的话,发现把后面的东西进行了抹零。芝,你呐。正五零了吧,什么意思啊,他说你低于前前四位的话,你全部都会抹掉。
17:06
就是前四位的话,你会都会抹掉,或四位吧,或四位全位抹掉,只留下四位以上,那么这我一个位置的话,是不是16的一倍,那在一个位置的话是16的二倍,16的三倍,16的四倍。五倍什么意思啊?只有你等于16的倍数的话,你才能够留下来,你16的以下的话,它就留不下来,那么意味着这个算法什么呀?就是16的。倍数。听明白了吗?这样说清楚了吧,你如果用计算器的话,我觉得一点就是,呃,用计算器的话,大家可能感知不到,最后通过这么一个手绘的形式,大家会比较清晰了。是不是意味着只有16的倍数就会留下来吧?OK,都听懂了是吧?OK,这个老师讲的好好啊是吧,这个老师讲的好,那么因为这说白了,在这个地方安减的16是不是就代表着16字节的对齐。
18:08
对不对,还有人说嘤音的啊,OK啊,你们嘤嘤什么意思啊,我也不知道啊,那么因为着在这过程中,就是说有个16字节对齐了。岁老师啊。嗯,我作为一个比较牛逼的人,就是我,我就是什么意思呢?嗯,为什么要16之间这些。16字节对齐。对,为什么?我。是吧,买了吧,买了啊字节地址。好。啊,寄存器还有吗。整齐。那我八字些不好吗?把这些不好吗?对。
19:00
苹果早期的版本里面的字节对齐是是八字节对齐。是八字节对齐,但是新版的是什么呢?16字节对齐,听明白了吗?一定记得方便快好了,漂亮,很多同学已经看到这点了啊。第一点在于什么呢?现在因为我们在整个过程中,首先第一点我们任何一个对象都具备什么?任何一个对象都具备一个什么?所以有个一说。所以跟你说一说,在这个值里面是占多少,是不是占八字诀。对不对,只有八字节好,那么如果说我按八这对齐的话,你会发现每一个挨着一个,就是你没有属性,没有内存,没有等其他一些东西,你都有八字接对形,但是你会发现这样的话,你会导致每一个对象,你会发现来我们画一个经典的牛逼的图啊,一个经一个经,钻石级僵尸都喜欢画图啊,而不是一个王者僵师。什么意思,因为我现在整个内存里面啊,因为内存的话都是非常节约的啊,好,那么接下来。
20:05
一下啊,这个好来。你会发现这是我们当前在这个内存里面发现,诶,这是诶。好这四个字么?这是一个person的内存空间,好接下来我们就会什么呢?好,接下来我们就会有一个什么呢?有一个teacher,然后一个student,是不是,那我们经常会看到很连续吧,很连续吧,好,来连续,再连续,好如果说我们在过程中如果是与八字一对决,你会发现每一个都会挨着,紧挨着什么啊。紧挨着对方的一说。什么意思呢?我的意思放在这里,我的老婆在这里,你爱着我老婆啥意思啊?是吧,你动不动,如果说你一不小心喝多了是吧,你一不小心喝多了,访问一查了,你给我访问到这里怎么办。那是吧是吧,是不是很尴尬呀,就会出现类似一些什么呢,也指针呢啊,访问内存错误啊等等一系列奔驰的小马代驰的玫瑰是是吧,意味着是不是就会发生一些混乱,为了使整个的内存更加安全的那些,那么意味着给他预留了无论你有没有,我先给你对什么呢对到16节总有那么预留的空间,好来这是第一个问题解决,那么老师。
21:23
为什么是16字节而不是什么呢?而是而不是什么呢,比如说哎。八加一呀。或者八加二啊或什么呢,所谓的就是八,而是什么呢?九啊,或者什么呢,九啊,或者十啊,或者11啊,或者12啊。对不对,为什么不是这些数字为什么是十呢?为什么是16呢?注意听。注意听,我们现在在整个的一个研究对象里面,我们经常会发现,我们最研究最多的是呢,是不是为对象。点接最多的是不是我对象一个对象多少之间八字觉。
22:00
就是无论你整个这些进行翻倍的话,我们是以整个的研究单我没对象,这我看看是不是以最小的研究对象来进行翻倍啊,或者其他的一些处理是不是更加容易读取啊,如果说你接下来我们说什么呢?就比如说我们在访问内存那里面,我们也可以去读取,但是你会读取会很累,就比如说你在整个类存那里面,我比如说。这个地方是我们person存存这个地方是我们的所在,内存,这个地方是我们当前student内存,我当然也可以,就比如说我苹果系统的过程中,它更多的是以什么呢?16或者八的倍数去处理,那么老师为什么在呢?因为如果说你接下来以一个什么呢?以一个呃,九或者十,你就会发现很恶心,什么意思呢?比如说这个地方是我们的。Person person里面是有个什么呢?有一个年龄四好这个地方就有个什么呢,有一个NAME8是吧,好,这个地方有个A,有个什么什等写是是啊。
23:04
这样吧,我们写一个这个地方是一个八,再有一个吧,然后再有一个吧,好,再接下来过。这个地方就是一个。在这次就是一个呃,四。在接下来我就是一个。四。八好,我们在苹果访问内存的话,它就会有个什么呢?图块,图块怎么一个图块的方式呢?就比如说我会随时隔地的改变我比如说我读取的程度吗?我不会因为什么你是就在读取的时候,我发现你读是发现其实我们经常会说些IO流的读写是很费时间的吗。所的读写是我吧,我如果说每一次我为你,为你的大小,我还不断的改变我的伸缩长度,伸缩长度我跟你说我这次主吧接是我改变股身16,你是不是很难受啊。是不是很难受?
24:01
你明白意思吧,好,那么如果说你每一次都做到什么呢?你八四节八字节或者16节节分开的话,我就发现,诶我读一次八,读一次八,读一次八,诶我再读到四的时候,我就不会读到别人家去,你看我如果说是读取的是什么呢?我如果这个地方不一定的空间,我这个地方不一定到16自己的空间的话,意味着我是个四家是正好是等于吧,意味着我下一次读把自己的话,意味着是不是读到别人的老婆那里去了。是不是读到别人的老婆上去啊?来,跟着我找最亲啊。这个地方是个难点啊,是不是读到别人家去了?所以说如果说我在这个地方预留的话,意味是什么意思啊。我是不是意味着你能读到正好诊断啊,不会产生混乱啊。明白了吧?来,听明白这一点的同学给我来一波六。来不了啊。可以啊,OK,好,来,这就是为什么要进行整断读取,第一方便,速度便捷,第02:16字节更加安全好不好,更加安全啊好明白这一点之后,我们接下来好明白一点,我们当前在过程中,嗯嗯,那么接下来我们下节个在研究什么呢?在研究这个地方影响的因素,我们啊先看完这个上面啊,先看这上面。
25:18
好,我们当前这个代码就是使用出来了。接下来就是什么呀,就是我在这个地方啊,我需要以16个字节。说白了,我这个地方是不是需要16个。是不是16字眼好,然后接下来我就出来。呃,出来。好,出来出来之后,我们接下来我们把它过一个断点,是不是就会来到这个地方,是不是十六十六之间啊,好,那么16这一招,接下来我们就开始去往下面走走。走,是不是找到c lock来,注意听我们刚才说这个地方是么呀,我明白一个点,当前的这个对象要开辟16个字体的内存,但是接下来我怎么去开变呢?通过c lock,这个也是下一节构角,那么接着通过它的一个返回值,我们首先第一点我们来看po项,Po向OC。
26:10
我不信。是个什么,是不一个你好,为什么研究它呢?来注意听啊,我们这个家伙是不是整个lo方法的一个什么。是不是当前这个方法已经进行处理出来的一个直接的影响者,也是如果说没有其他影响的话,他就会直接返回,返回的吧,是不是他非常是一个主角吧。是不是一个主角,所以我们一定要研究它,这就是我们返回的对象返回这那么经过我们开辟过程,首先是个对象嘛,那么经过我们的clo之后,我们再来看一下啊。来。接下来比。看到没有,是不是有地址空间了。什么意思呢?在这种中我们通过调用的一个方法,这是什么方法呢?调用个只告诉你要申请这么多空间,那么我们在整个的内存段,我就给你申请开辟这么的空间,那么这个地方,并且告诉你这个这个地方的什么呢?指针地址为什么呢?零叉000101B,什么2BF组零。
27:11
你看就是这片内存空间的,是不是这个地址指针就是它听明白吗?是不是通过我们当前的c lock开辟出来的内存啊,我没说错吧,我说这个地方是不是第二步开辟内存区啊。对不对,还没出去吧,好老师你在你在说谎的,你都是有点骗人的,我们经常在外面,比如说我们po一个什么呢?Person,我们是怎样打印的。我们是不是整接打印了,我们是不是经常会打印出这么一个家伙,比如说什呢,哎LG person什么呢,然后一个冒号什么呢?哎然后什么呢,呃名叉什么呢?呃100000是这边的地址吧。等一下是不是会打印出这个东西。所以经常会这么个打印吧。
28:00
对不对,我们调题方法他也会这么去打印吗?但是老师你现在这个地方我打印那个PU的,我不记它根本没有,因为PU就是调用当前的的款方法就打印吗?但是你这地方打印什么,只是一个地址矩针,说白了啊,你在最后中做的事情他还没有做到位什么呀,就是没有直接关联到什么啊。它只是一个指针。但是这个指针跟我们这个地方传过来的。什么?LG有关系吗?没有关系吧,跟这个LG。Person没有关系吧,对不对,所以在这个时候就有了第三步,非常重要的一部分,就什么呀,就是initial a,就是直接把当前的类和当前的指针离值绑定在一起。绑定在一起,OK,那这一步也验证了一个点。偶lock是开辟。
29:01
内存。的地方明白,我说改变内存的地方,我们是不是第一个面试题我们已经讲完了啊,就是我们刚开始验研究的时候提出那个问题,我然后做什么,还没内存排,内存还在问中,我们接下来进行下一步走理运行,运行之后我们在这个地方稍微打个道理。好,打个断点,诶,这个断点应该是已经进来了。呃,你知道为什么吗?这已经进来了我们,呃,因为我当前已经隔了一行,所以就是呢读取错误啊好来读取这一行,我们把它稍微过一下啊,过一下招看啊,最新我们进了initial这个,接下来我们再进行po。当前注意看啊来。此时此刻。还有谁明白吗?在这一步里面有非常重要的三个方法,第一个方法告诉系统我要开辟多少内存,第二个方法我们开始去开辟内存,拿回指针,第三步就是我们什么呢?把我们原来这个类和这个指针绑定在一起进行关联,就会输出LG0叉101B2BF90。
30:13
明白吗?对吧,这就是我们在PPT上面给大家总结到什么呢?来做个PT。听明白了吗?第一点,计算出需要使用的内存,申请改变内存只能返为千,关联到相应的类,看到没有?这就是一个王牌金牌讲师在最后面进行点睛之笔。看到没有,完美舒服,看到没有,OK,好,来,这个视频我们就停到这里。
我来说两句