【極客班】Objective-C學(xué)習(xí)筆記(二)

個人認為本周所講的知識點的難度較上周有很大提高,雖然只有五節(jié)課,每節(jié)課的時長也不多,但是作業(yè)做起來問題不斷,真是難熬的一周!


下面把我在課上聽到的自認為重要的知識點記錄下來,分享和參考:



【集合】部分:三個重點

I. NSArray/NSSet/NSLibrary(父類) -->NSMutable...(子類):會出現(xiàn)偷換指針的漏洞,需要切切注意。

II. 盡量使用快速枚舉方法,迭代器甚至是for循環(huán)的效率很低。

III.可變?nèi)萜鲀?nèi)存的增長方式

另外:一個number不可以直接放在NSArray中,必須封裝為對象類型。

? ? ? ? ?在內(nèi)存模型上,棧上的數(shù)組指向堆上的一塊內(nèi)存,而每個元素指向同一個新的對象。堆上的對象不能指向棧上,因為棧的生存周期較短(每個棧在函數(shù)結(jié)束之后即消失),因此只能是堆上的對象指向堆上,故NSNumber被封裝成對象類型。


【ARC】部分的重點

ARC結(jié)合屬性之后,一旦指針回指對象,會形成循環(huán)引用,如果出現(xiàn)這種情況,要在attribute上加一個weak,構(gòu)成一個弱引用,以解決這個問題。


【協(xié)議】部分

協(xié)議可包含的成員:

? (常用)屬性、實例方法、類方法

? (罕見)初始化器、析構(gòu)器

? (不可)實例變量成員 <=[協(xié)議中定義的屬性本質(zhì)上是訪問器方法]

協(xié)議的本質(zhì)是一個不能創(chuàng)建實例的聲明類型。

常用的協(xié)議需要了解。


【類別與擴展】

類別:我認為類別的主要任務(wù)就是把XCode自己包含的類(或者一些不知道源代碼的)進行一下功能上的擴充。譬如作業(yè)中,對數(shù)組的一個擴充,以實現(xiàn)一些沒有的功能。 ? 可以添加的包括:類方法、實例方法或者重寫基類方法,而屬性、實例變量和重名的就不行了。 ? 同時,命名也需要有一定的規(guī)范,即一些約定俗成的東西還是不要個性的為好。

擴展的話,也是增加功能,并且可以添加、改寫屬性,但只能類內(nèi)訪問,這也是和類別恰恰相反的地方。

類別的缺點(摘抄):

類別乍一看像是一個類的子類,其實類別還是有一定的局限性,當(dāng)在Category中覆蓋一個繼承的方法,在Category中的方法可以通過向super類發(fā)送一個消息來調(diào)用被繼承的方法。但是,如果 Category中覆蓋的那個方法已經(jīng)在這個類的其它Category定義過了,則之前定義的方法將沒有機會被程序調(diào)用 ,在Category中無法確定其能夠可靠的覆蓋某個方法,而這個方法已經(jīng)在其它的Category中定義過。這個問題在使用Cocoa框架時尤其突出。 當(dāng)你想覆蓋某個框架已經(jīng)定義好的方法時,該方法已經(jīng)在其它Category中實現(xiàn),這樣就無法確定哪個定義和實現(xiàn)會被最先使用,帶來很大的不確定性。

如果你重新覆蓋定義了一些方法,往往會導(dǎo)致這個方法在整個框架中實現(xiàn)發(fā)生了變化。舉例來說,如果你增加了NSObject中windowWillClose:的實現(xiàn),這會導(dǎo)致所有的窗口調(diào)用那個新實現(xiàn)的方法,從而改變所有NSWindows實例的行為。這會帶來很多不確定性,并很有可能導(dǎo)致程序的崩潰。


本周的課有點吃力,說實話,很多東西都沒有徹底消化,欠賬也很多。歸根結(jié)蒂還是自己的努力不夠,同時批到了同學(xué)的作業(yè)和心得筆記,發(fā)現(xiàn)自己的差距和那些認真努力的同學(xué)很大,今后要以他們?yōu)榘駱?,格物致知,努力學(xué)習(xí),把之前欠下來的補上,并且追上進度,創(chuàng)造更大的成績!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容