注意:更新內(nèi)容會同步到GitHub iOSWiki-知識體系總結(jié)
總結(jié)-Swif底層本質(zhì)
Swift/本質(zhì) #iOS體系總結(jié)
語法掃盲
About Swift — The Swift Programming Language (Swift 5.1)
Swift 教程 - SwiftGG
一些關(guān)鍵字區(qū)別整理
Self和self的區(qū)別?.self的理解?
.type和type(of: AnyObject)的區(qū)別和理解?
AnyObject、Anyclass、Any的區(qū)別和理解?
isKind、is、isMenber的區(qū)別和理解?
rethrow的理解?
open、public、internal、fileprivate、 private的理解?
探究本質(zhì)
Swift各種屬性的本質(zhì)
Swift里let和var的理解?
Swift里計算型屬性的本質(zhì)是什么?占多少個字節(jié)?是存儲在當(dāng)前對象里的嗎?可以用let修飾嗎?
枚舉的原始值的本質(zhì)是什么?占幾個字節(jié)?它在內(nèi)存中是存儲在枚舉里嗎?
lazy屬性可以用let修飾嗎?lazy屬性是線程安全的嗎?
觀察型屬性在初始化的時候會觸發(fā)嗎?定義的時候給定默認(rèn)值會觸發(fā)嗎?
Swift里inout修飾的函數(shù)參數(shù)本質(zhì)是什么?
inout的參數(shù)能傳遞計算屬性嗎?傳遞計算屬性的底層原理是什么?
inout參數(shù)傳遞觀察型屬性會觸發(fā)觀察的willset和didset方法嗎?底層原理又是什么?為什么這樣設(shè)計?
枚舉可以定義存儲屬性嗎?枚舉可以定義類型存儲屬性嗎?
類型存儲屬性和lazy一樣是延遲加載嗎?如果一樣那他時線程安全的嗎?為什么?
String、Araay、Option本質(zhì)
Swift一個String類型占多少個字節(jié)?String類型變量的字面量在內(nèi)存中是怎樣存儲的?字面量長度小于16個字節(jié)是怎樣存儲的?大于16個字節(jié)又是怎樣存儲的?
如何計算一個Swift數(shù)組在內(nèi)存中的大???數(shù)組存儲在??臻g還是堆空間?
Swift可選類型的本質(zhì)?
Swift閉包的本質(zhì)
Swift閉表的理解?本質(zhì)是什么?閉包表達(dá)式和閉包是什么關(guān)系?
Swift閉包值捕獲的原理是什么?捕獲到的值存儲在哪里?捕獲多個值時它們在內(nèi)存中是連續(xù)存儲的嗎?一個捕獲到int值的閉包在內(nèi)存中占幾個字節(jié)?
DispatchQueue.async閉包體內(nèi)為什么要強制加self.訪問成員變量?說一下你對逃逸閉包的理解?
Swift里的??運算符的作用?本質(zhì)是什么?
Swift多態(tài)原理 Swift 方法派發(fā)
Swift里是怎樣實現(xiàn)多態(tài)的?Swift支持哪些方法派發(fā)方式?內(nèi)部機制又是怎樣的?引用類型、值類型、協(xié)議的方法派發(fā)有什么不同?為什么官方建議使用結(jié)構(gòu)體+協(xié)議的組合而不使用class類型?
Swift里的指針
Swift里有那幾種類型的指針?有什么區(qū)別?
特性和優(yōu)化
函數(shù)和協(xié)議編程 Swift反射機制 Swift性能優(yōu)化
大概描述一下Swift的編譯流程?Swift和OC的區(qū)別?
面向協(xié)議編程的理解?對函數(shù)式編程的理解?map和flatMap的區(qū)別?filter、reduce的理解?
對Swift里反射機制的理解?
如何優(yōu)化Swift性能?