-
Swift 靜態(tài)派發(fā)和動(dòng)態(tài)派發(fā)
動(dòng)態(tài)派發(fā)是指需要在運(yùn)行時(shí)找到方法的具體實(shí)現(xiàn)歌径。
靜態(tài)派發(fā)是指在運(yùn)行時(shí)調(diào)用方法不需要查表奋早,直接跳轉(zhuǎn)到方法的代碼中執(zhí)行。
2.內(nèi)聯(lián)是指在編譯期把每一處方法調(diào)用替換為直接執(zhí)行方法內(nèi)部的代碼勉盅,可以幫助你避免運(yùn)行時(shí)方法調(diào)用的時(shí)間開銷丢习。
-
Swift 柯里化
柯里化(Currying),又稱部分求值(Partial Evaluation)锁施,是一種函數(shù)式編程思想陪踩,就是把接受多個(gè)參數(shù)的函數(shù)轉(zhuǎn)換成接收一個(gè)單一參數(shù)(最初函數(shù)的第一個(gè)參數(shù))的函數(shù),并且返回一個(gè)接受余下參數(shù)的新函數(shù)技術(shù)悉抵。
4.實(shí)現(xiàn)動(dòng)畫的方式:A.UIView Animation; B.CALayer Animation; C.UIViewPropertyAnimator(iOS 10引進(jìn))肩狂;
5.iOS 9 分屏多任務(wù):Slide Over & Split View
6.iOS11 Drag and Drop 圖片拖動(dòng)功能
7.defer:用一句話概括,就是 defer block 里的代碼會(huì)在函數(shù) return 之前執(zhí)行姥饰,無(wú)論函數(shù)是從哪個(gè)分支 return 的傻谁,還是有 throw,還是自然而然走到最后一行列粪。
8.數(shù)據(jù)持久化:
A.Plist:讀寫通過contentsFile和writeToFile保存App的基本參數(shù);
B.Preference:UserDefaults完成key-value配對(duì)保存App的基本參數(shù);
C.NSKeyedArchiver:遵循NSCoding協(xié)議审磁,必須實(shí)現(xiàn)父類的歸檔(initWithCoder)和解檔(encodeWithCoder)相比前面兩者谈飒,可以任意指定文件存儲(chǔ)的位置和文件名;
D.CoreData:蘋果推出的大規(guī)模數(shù)據(jù)持久化的方案;
E.其他的三方:SQLite3,F(xiàn)MDB态蒂,Realm杭措;
9.Serial/Concurrent:聲明隊(duì)列的屬性是串行還是并行的;
Sync/Async:聲明任務(wù)是同步執(zhí)行還是異步執(zhí)行的钾恢;
10.異步操作無(wú)論是在串行隊(duì)列還是并行隊(duì)列手素,都可能出現(xiàn)競(jìng)態(tài)條件的問題。官方的定義是如果程序運(yùn)行順序的改變會(huì)影響最終結(jié)果瘩蚪,這就是一個(gè)競(jìng)態(tài)條件(race condition).
11.AST抽象語(yǔ)法樹