Swift

Swift Day07 闭包探索

2020-12-01  本文已影响0人  望穿秋水小作坊

一、闭包

1. 请问下面代码的输出?
问题
2. 下面代码会对 person1 进行捕获吗?
题目
3. 下面函数打印什么?
image.png

二、探索普通函数变量的内存放着什么?

1. 首先我们探索一下,一个正常的普通函数变量,它所占据的字节大小?
func sum(_ v1: Int, _ v2: Int) -> Int { v1 + v2 }
var fn = sum
print(MemoryLayout.stride(ofValue: fn))
// 输出: 16
2. 我们在上题函数的 print行 打上断点,进入汇编模式
汇编图 侧面证明

三、探索闭包变量的内存放着什么?

1. 闭包变量代码如下
闭包变量 汇编
2. 接下来我们要弄懂 %rax 和 %rdx 分别存放什么?
3. 接下来我们要继续跟进,确认 %rdx 到底存放什么?
4. 接下来我们要继续跟进,确认 %rax 到底存放什么?是否真的是 plus 地址?
5. 太难了,这篇文章猝死了。
上一篇 下一篇

猜你喜欢

热点阅读