個(gè)人認(rèn)為本周所講的知識(shí)點(diǎn)的難度較上周有很大提高馍惹,雖然只有五節(jié)課,每節(jié)課的時(shí)長(zhǎng)也不多龙宏,但是作業(yè)做起來(lái)問(wèn)題不斷棵逊,真是難熬的一周!
下面把我在課上聽到的自認(rèn)為重要的知識(shí)點(diǎn)記錄下來(lái)银酗,分享和參考:
【集合】部分:三個(gè)重點(diǎn)
I. NSArray/NSSet/NSLibrary(父類) -->NSMutable...(子類):會(huì)出現(xiàn)偷換指針的漏洞辆影,需要切切注意。
II. 盡量使用快速枚舉方法黍特,迭代器甚至是for循環(huán)的效率很低蛙讥。
III.可變?nèi)萜鲀?nèi)存的增長(zhǎng)方式
另外:一個(gè)number不可以直接放在NSArray中,必須封裝為對(duì)象類型灭衷。
? ? ? ? ?在內(nèi)存模型上次慢,棧上的數(shù)組指向堆上的一塊內(nèi)存,而每個(gè)元素指向同一個(gè)新的對(duì)象。堆上的對(duì)象不能指向棧上经备,因?yàn)闂5纳嬷芷谳^短(每個(gè)棧在函數(shù)結(jié)束之后即消失)拭抬,因此只能是堆上的對(duì)象指向堆上,故NSNumber被封裝成對(duì)象類型侵蒙。
【ARC】部分的重點(diǎn)
ARC結(jié)合屬性之后,一旦指針回指對(duì)象傅蹂,會(huì)形成循環(huán)引用纷闺,如果出現(xiàn)這種情況,要在attribute上加一個(gè)weak份蝴,構(gòu)成一個(gè)弱引用犁功,以解決這個(gè)問(wèn)題。
【協(xié)議】部分
協(xié)議可包含的成員:
? (常用)屬性婚夫、實(shí)例方法浸卦、類方法
? (罕見(jiàn))初始化器、析構(gòu)器
? (不可)實(shí)例變量成員 <=[協(xié)議中定義的屬性本質(zhì)上是訪問(wèn)器方法]
協(xié)議的本質(zhì)是一個(gè)不能創(chuàng)建實(shí)例的聲明類型案糙。
常用的協(xié)議需要了解限嫌。
【類別與擴(kuò)展】
類別:我認(rèn)為類別的主要任務(wù)就是把XCode自己包含的類(或者一些不知道源代碼的)進(jìn)行一下功能上的擴(kuò)充。譬如作業(yè)中时捌,對(duì)數(shù)組的一個(gè)擴(kuò)充怒医,以實(shí)現(xiàn)一些沒(méi)有的功能。 ? 可以添加的包括:類方法奢讨、實(shí)例方法或者重寫基類方法稚叹,而屬性、實(shí)例變量和重名的就不行了拿诸。 ? 同時(shí)扒袖,命名也需要有一定的規(guī)范,即一些約定俗成的東西還是不要個(gè)性的為好亩码。
擴(kuò)展的話季率,也是增加功能,并且可以添加蟀伸、改寫屬性蚀同,但只能類內(nèi)訪問(wèn),這也是和類別恰恰相反的地方啊掏。
類別的缺點(diǎn)(摘抄):
類別乍一看像是一個(gè)類的子類蠢络,其實(shí)類別還是有一定的局限性,當(dāng)在Category中覆蓋一個(gè)繼承的方法迟蜜,在Category中的方法可以通過(guò)向super類發(fā)送一個(gè)消息來(lái)調(diào)用被繼承的方法刹孔。但是,如果 Category中覆蓋的那個(gè)方法已經(jīng)在這個(gè)類的其它Category定義過(guò)了,則之前定義的方法將沒(méi)有機(jī)會(huì)被程序調(diào)用 髓霞,在Category中無(wú)法確定其能夠可靠的覆蓋某個(gè)方法卦睹,而這個(gè)方法已經(jīng)在其它的Category中定義過(guò)。這個(gè)問(wèn)題在使用Cocoa框架時(shí)尤其突出方库。 當(dāng)你想覆蓋某個(gè)框架已經(jīng)定義好的方法時(shí)结序,該方法已經(jīng)在其它Category中實(shí)現(xiàn),這樣就無(wú)法確定哪個(gè)定義和實(shí)現(xiàn)會(huì)被最先使用纵潦,帶來(lái)很大的不確定性徐鹤。
如果你重新覆蓋定義了一些方法,往往會(huì)導(dǎo)致這個(gè)方法在整個(gè)框架中實(shí)現(xiàn)發(fā)生了變化邀层。舉例來(lái)說(shuō)返敬,如果你增加了NSObject中windowWillClose:的實(shí)現(xiàn),這會(huì)導(dǎo)致所有的窗口調(diào)用那個(gè)新實(shí)現(xiàn)的方法寥院,從而改變所有NSWindows實(shí)例的行為劲赠。這會(huì)帶來(lái)很多不確定性,并很有可能導(dǎo)致程序的崩潰秸谢。
本周的課有點(diǎn)吃力凛澎,說(shuō)實(shí)話,很多東西都沒(méi)有徹底消化钮追,欠賬也很多预厌。歸根結(jié)蒂還是自己的努力不夠,同時(shí)批到了同學(xué)的作業(yè)和心得筆記元媚,發(fā)現(xiàn)自己的差距和那些認(rèn)真努力的同學(xué)很大轧叽,今后要以他們?yōu)榘駱樱裎镏轮兀W(xué)習(xí)炭晒,把之前欠下來(lái)的補(bǔ)上,并且追上進(jìn)度甥角,創(chuàng)造更大的成績(jī)网严!