swift闭包通过引用传递?

时间:2016-08-16 03:17:47

标签: ios swift memory-management objective-c-blocks

我无法理解闭包是如何创建的。

例如在ViewController A:

dispatch_async(dispatch_get_main_queue()) [weak weakSelf = self] {              
  weakSelf?.property = "something"
}

我猜这个代码是如何工作的

1)ViewController A只是创建一个闭包(假设闭包存储在堆地址:0)并附加对闭包的强引用

2)主队列中的对象还有另一个对闭包的强引用,因为内存指针正在由ViewController A中的函数传递

3)当ViewController A在gcd调用闭包之前是dealloc时,闭包对象仍然在堆中,因为gcd有一个强引用,但我不明白,当ViewController为零时,怎么会gcd在ViewController A中调用闭包?

我误解了什么吗?

0 个答案:

没有答案