Swift 3必看:sizeof移進MemoryLayout

沒故事的卓同學發表於2016-10-08

在學習Swift 3的過程中整理了一些筆記,如果想看其他相關文章可前往《Swift 3必看》系列目錄

sizeof這個方法名直接取自C語言,但是實際上LLVM中並沒有一個函式叫sizeof。而且sizeof的使用範圍很窄,不像mapfilter這種經常會全域性用到。所以重新定義了一個結構體 MemoryLayout 來實現原來sizeof的功能,使用上也有變化。

主要有兩種方式,一種是直接通過泛型引數從靜態變數獲取:

let stringSize = MemoryLayout<String>.size複製程式碼

也可以通過呼叫靜態方法獲取

let stringValue = "A"
let varSize = MemoryLayout.size(ofValue: stringValue)複製程式碼

兩者都會得到正確的結果:

除了sizeof, MemoryLayout還可以獲取stride alignment

歡迎關注我的微博:@沒故事的卓同學

相關連結: SE-0101-Reconfiguring sizeof and related functions into a unifiedMemoryLayout struct

相關文章