sizeof
這個方法名直接取自C語言,但是實際上LLVM中並沒有一個函式叫sizeof
。而且sizeof
的使用範圍很窄,不像map
,filter
這種經常會全域性用到。所以重新定義了一個結構體 MemoryLayout
來實現原來sizeof
的功能,使用上也有變化。
主要有兩種方式,一種是直接通過泛型引數從靜態變數獲取:
1 |
let stringSize = MemoryLayout.size |
也可以通過呼叫靜態方法獲取
1 2 |
let stringValue = "A" let varSize = MemoryLayout.size(ofValue: stringValue) |
兩者都會得到正確的結果:
除了sizeof
, MemoryLayout還可以獲取stride
, alignment
。
歡迎關注我的微博:@沒故事的卓同學
相關連結:
SE-0101-Reconfiguring sizeof and related functions into a unifiedMemoryLayout struct