iOSiOS-Swift移动开发技术前沿

Swift 3必看:sizeof移进MemoryLayout

2016-10-08  本文已影响2173人  没故事的卓同学

在学习Swift 3的过程中整理了一些笔记,如果想看其他相关文章可前往《Swift 3必看》系列目录

<code>sizeof</code>这个方法名直接取自C语言,但是实际上LLVM中并没有一个函数叫<code>sizeof</code>。而且<code>sizeof</code>的使用范围很窄,不像<code>map</code>,<code>filter</code>这种经常会全局用到。所以重新定义了一个结构体<code> MemoryLayout </code>来实现原来<code>sizeof</code>的功能,使用上也有变化。

主要有两种方式,一种是直接通过泛型参数从静态变量获取:

let stringSize = MemoryLayout<String>.size

也可以通过调用静态方法获取

let stringValue = "A"
let varSize = MemoryLayout.size(ofValue: stringValue)

两者都会得到正确的结果:

除了<code>sizeof</code>, MemoryLayout还可以获取<code>stride</code>,<code> alignment </code>。

欢迎关注我的微博:@没故事的卓同学

相关链接:
SE-0101-Reconfiguring sizeof and related functions into a unifiedMemoryLayout struct

上一篇下一篇

猜你喜欢

热点阅读