Runloop是什么未巫?如何用扫尺?在什么場景下會用到约急?
RunLoop是與線程進行關(guān)聯(lián)的零远,可以這樣理解,每一個線程中會創(chuàng)建一個RunLoop(不一定每個線程都有RunLoop)厌蔽,而不是一個task創(chuàng)建一個RunLoop遍烦。
系統(tǒng)會在主線程開始運行時,隱式的啟動主線程的RunLoop躺枕,而輔助線程不會自動啟動,需要顯式的啟動供填。
數(shù)據(jù)列表需要展示大量數(shù)據(jù)拐云,如何優(yōu)化?至少三個方面近她?
第一先利用TableVIew或者CollectionView的重用機制;第二再定制各種樣式的Cell 粘捎;重點第三通過CoreText或者TextKit來做富文本的展示薇缅,盡量減少UI控件的繪制工作 再深入一點:通過空間換取時間,利用緩存方式進行緩存Cell的高度攒磨,從而減少計算的時間
SQLite和CoreData區(qū)別娩缰?優(yōu)缺點?FBDataBase使用完疫?coreData結(jié)構(gòu)構(gòu)成壳鹤?
SQLite和CoreData沒有本質(zhì)上的區(qū)別芳誓,CoreData是對原始SQLite數(shù)據(jù)庫API訪問進行了一層封裝,通過面向?qū)ο蟮慕涌谶M行管理數(shù)據(jù)緩存蹦锋,比使用SQL語句操作SQLIte數(shù)據(jù)庫更加簡單和方便兆沙,當然CoreData也有缺點,比如API不夠用莉掂,處理大量數(shù)據(jù)會變得緩慢葛圃,SQLite就沒有這樣的問題,只要寫SQL語句的人有經(jīng)驗憎妙,大部分是可以避免的库正,當然SQLIte也會有一些弊端,比如網(wǎng)絡(luò)數(shù)據(jù)怎樣自動化映射到數(shù)據(jù)庫中厘唾?而CoreData就有類似由Github寫的Mantle開源庫褥符,很好的處理這個問題。CoreData提供一個管理上下文抚垃,數(shù)據(jù)模型喷楣,數(shù)據(jù)持久化存儲助理協(xié)調(diào)器。
上千條數(shù)據(jù)需要插入數(shù)據(jù)表鹤树,如何優(yōu)化提高效率铣焊?
使用事務(wù),F(xiàn)MDB中有現(xiàn)成的代碼罕伯,beginTransaction曲伊。
同時對同一張表進行操作?
使用鎖追他、串行調(diào)度隊列等都可以坟募,參考FMDB中的FMDtabaseQueue。
多線程里面主要由哪幾種邑狸?它們的優(yōu)缺點懈糯?
多線程:NSOperation配合NSOperationQueue,GCD推溃,NSThread昂利;GCD的缺點難于管理届腐,不可取消和暫定,NSTr難于定位問題蜂奸,NSOperation可用性高犁苏,可支持調(diào)度、暫停扩所,取消等功能围详,一般都會才去繼承NSOperation來做更深入的定制線程
實現(xiàn)類似網(wǎng)易新聞的滑動標簽選項
網(wǎng)易新聞的滾動標簽和容器都是一個聯(lián)動的ScrollView,通過統(tǒng)一管理數(shù)據(jù)源祖屏,利用KVO做兩個ScrollView的聯(lián)動工作(項目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)