Skip to content

Commit eb757a5

Browse files
committed
修改38题__block原理__block修饰后int类型也从4字节变成了32字节
1 parent 124126f commit eb757a5

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -709,6 +709,8 @@ autoreleasepool 以一个队列数组的形式实现,主要通过下列三个函
709709

710710
这也证实了:a 在定义前是栈区,但只要进入了 block 区域,就变成了堆区。这才是 `__block` 关键字的真正作用。
711711

712+
`__block` 关键字修饰后,int类型也从4字节变成了32字节,这是 Foundation 框架 malloc 出来的。这也同样能证实上面的结论。(PS:居然比 NSObject alloc 出来的 16 字节要多一倍)。
713+
712714
理解到这是因为堆栈地址的变更,而非所谓的“写操作生效”,这一点至关重要,要不然你如何解释下面这个现象:
713715

714716
以下代码编译可以通过,并且在block中成功将a的从Tom修改为Jerry。

0 commit comments

Comments
 (0)