Runloop是什么?如何用?在什么場(chǎng)景下會(huì)用到?
RunLoop是與線程進(jìn)行關(guān)聯(lián)的,可以這樣理解,每一個(gè)線程中會(huì)創(chuàng)建一個(gè)RunLoop(不一定每個(gè)線程都有RunLoop),而不是一個(gè)task創(chuàng)建一個(gè)RunLoop。
系統(tǒng)會(huì)在主線程開(kāi)始運(yùn)行時(shí),隱式的啟動(dòng)主線程的RunLoop,而輔助線程不會(huì)自動(dòng)啟動(dòng),需要顯式的啟動(dòng)。
數(shù)據(jù)列表需要展示大量數(shù)據(jù),如何優(yōu)化?至少三個(gè)方面?
第一先利用TableVIew或者CollectionView的重用機(jī)制;第二再定制各種樣式的Cell ;重點(diǎn)第三通過(guò)CoreText或者TextKit來(lái)做富文本的展示,盡量減少UI控件的繪制工作 再深入一點(diǎn):通過(guò)空間換取時(shí)間,利用緩存方式進(jìn)行緩存Cell的高度,從而減少計(jì)算的時(shí)間
SQLite和CoreData區(qū)別??jī)?yōu)缺點(diǎn)?FBDataBase使用?coreData結(jié)構(gòu)構(gòu)成?
SQLite和CoreData沒(méi)有本質(zhì)上的區(qū)別,CoreData是對(duì)原始SQLite數(shù)據(jù)庫(kù)API訪問(wèn)進(jìn)行了一層封裝,通過(guò)面向?qū)ο蟮慕涌谶M(jìn)行管理數(shù)據(jù)緩存,比使用SQL語(yǔ)句操作SQLIte數(shù)據(jù)庫(kù)更加簡(jiǎn)單和方便,當(dāng)然CoreData也有缺點(diǎn),比如API不夠用,處理大量數(shù)據(jù)會(huì)變得緩慢,SQLite就沒(méi)有這樣的問(wèn)題,只要寫(xiě)SQL語(yǔ)句的人有經(jīng)驗(yàn),大部分是可以避免的,當(dāng)然SQLIte也會(huì)有一些弊端,比如網(wǎng)絡(luò)數(shù)據(jù)怎樣自動(dòng)化映射到數(shù)據(jù)庫(kù)中?而CoreData就有類(lèi)似由Github寫(xiě)的Mantle開(kāi)源庫(kù),很好的處理這個(gè)問(wèn)題。CoreData提供一個(gè)管理上下文,數(shù)據(jù)模型,數(shù)據(jù)持久化存儲(chǔ)助理協(xié)調(diào)器。
上千條數(shù)據(jù)需要插入數(shù)據(jù)表,如何優(yōu)化提高效率?
使用事務(wù),F(xiàn)MDB中有現(xiàn)成的代碼,beginTransaction。
同時(shí)對(duì)同一張表進(jìn)行操作?
使用鎖、串行調(diào)度隊(duì)列等都可以,參考FMDB中的FMDtabaseQueue。
多線程里面主要由哪幾種?它們的優(yōu)缺點(diǎn)?
多線程:NSOperation配合NSOperationQueue,GCD,NSThread;GCD的缺點(diǎn)難于管理,不可取消和暫定,NSTr難于定位問(wèn)題,NSOperation可用性高,可支持調(diào)度、暫停,取消等功能,一般都會(huì)才去繼承NSOperation來(lái)做更深入的定制線程
實(shí)現(xiàn)類(lèi)似網(wǎng)易新聞的滑動(dòng)標(biāo)簽選項(xiàng)
網(wǎng)易新聞的滾動(dòng)標(biāo)簽和容器都是一個(gè)聯(lián)動(dòng)的ScrollView,通過(guò)統(tǒng)一管理數(shù)據(jù)源,利用KVO做兩個(gè)ScrollView的聯(lián)動(dòng)工作(項(xiàng)目https://github.com/JackTeam/XHNewsFrameworkExample)(wiki:https://github.com/JackTeam/XHNewsFrameworkExample/wiki/XHNewsFramework%E6%A1%86%E6%9E%B6%E6%96%87%E6%A1%A3)