1.KVO
1.1> KVO 簡介:
KVO 是 OC 觀察者設(shè)計模式的一種實現(xiàn).KVO 指定一個被觀察的對象的屬性,當該屬性發(fā)生變化時,觀察者會收到通知,并作出相應(yīng)處理.
1.2>KVO 實現(xiàn)原理:
KVO 是通過 Runtime 機制實現(xiàn)的,當觀察某對象A時,KVO機制動態(tài)創(chuàng)建一個對象A當前類的子類NSKVONotifying_A,并為這個新的子類重寫了被觀察屬性keyPath的setter 方法。setter 方法隨后負責(zé)通知觀察對象屬性的改變狀況。
子類setter方法剖析:KVO的鍵值觀察通知依賴于 NSObject 的兩個方法:willChangeValueForKey:和didChangevlueForKey:,在存取數(shù)值的前后分別調(diào)用2個方法:
被觀察屬性發(fā)生改變之前,willChangeValueForKey:被調(diào)用,通知系統(tǒng)該 keyPath 的屬性值即將變更;當改變發(fā)生后, didChangeValueForKey: 被調(diào)用,通知系統(tǒng)該 keyPath 的屬性值已經(jīng)變更;之后, observeValueForKey:ofObject:change:context: 也會被調(diào)用。且重寫觀察屬性的setter 方法這種繼承方式的注入是在運行時而不是編譯時實現(xiàn)的。
1.注冊觀察者;
2.實現(xiàn)屬性值變化時獲取通知的方法;
3.移除觀察者.
2.KVC
2.1>KVC 簡介: KVC(Key Value Code),鍵值編碼的簡稱.KVC簡單來說,就是操作一個對象,可以像操作字典一樣,通過key來取值和賦值.
2.2>KVC 流程:
用KVC取值或賦值時,會優(yōu)先找這個屬性對應(yīng)的getter或setter方法來對這個屬性賦值
如果找不到,則會查找?guī)聞澗€的屬性,如果找到則賦值
如果依然找不到,則會查找不帶下劃線的屬性,如果找到則賦值
如果還是找不到,則拋出異常
用KVC時傳入的key必須保證類中存在同名的屬性.否則會運行時崩潰.此時可以在類中重寫setValue: forUndefinedKey:
2.3>使用 KVC 的好處:
2.3.1 可以訪問對象的私有變量;
2.3.2 可以快速字典轉(zhuǎn)模型. [model setValuesForKeysWithDictionary:dic];
3.內(nèi)存管理
iOS 的內(nèi)存管理分為 ARC 與 MRC兩種模式.當前主流的為 ARC 模式.ARC 的本質(zhì)是 MRC, 只不過是系統(tǒng)幫助開發(fā)者管理創(chuàng)建的對象或內(nèi)存空間.
MRC 下的關(guān)鍵字包括:alloc,retain,copy,release,autorelease, 其中,alloc,retain,copy會將引用計數(shù)器 +1, release 和 autorelease 會將引用計數(shù)器 -1;
iOS 采用引用計數(shù)器的方式管理內(nèi)存,引用計數(shù)器是對一塊內(nèi)存地址的所有權(quán)的記錄.當一塊內(nèi)存被開辟的時候,引用計數(shù)器為 1,在這之后,每有一個新的指針指向該內(nèi)存,則引用計數(shù)器的值 +1,當某個指針不指向該內(nèi)存地址時,該內(nèi)存地址的引用計數(shù)器 -1.當內(nèi)存地址的引用計數(shù)器變?yōu)?0的時候,系統(tǒng)會釋放該內(nèi)存地址.
深拷貝和淺拷貝
copy語法的目的:改變副本的時候,不會影響到源對象;
深拷貝:內(nèi)容拷貝,會產(chǎn)生新的對象。新對象計數(shù)器置為1,源對象計數(shù)器不變;
淺拷貝:指針拷貝,不會產(chǎn)生新的對象。源對象計數(shù)器+1.
注:要實現(xiàn) copy, 必須實現(xiàn)<NSCopying>協(xié)議
只有不可變對象調(diào)用copy方法時為淺拷貝,其他情況均為深拷貝;
4.socket
5.藍牙
6.runtime
7.isa
8.數(shù)據(jù)庫
9.多線程
10.修飾符(retain,copy,strong...)
11.http,https,TCP/IP
12.加密(AES,MD5...)
13.包體積優(yōu)化
主要途徑是移除項目中不再使用的資源文件、合并代碼(合理使用分類)
14.手勢沖突
15.SDWebImage 緩存機制
16.推送
17.版本適配
18.AutoLayout
19.Swift 4.0
20.協(xié)議代理
21.block
22.性能優(yōu)化
23.視頻播放
24.直播
25.網(wǎng)絡(luò)
26.歸檔 & 解檔