### 那么，这种情况该怎么解决呢？

ViewController 和 SomeButton 的实例都成功释放了，也就是说这两种写法都可以解决循环强引用的问题。

### 那么，我们是用weak还是unowned呢？

Apple 在 《The Swift Programming Language》中是这么说的：

Define a capture in a closure as an unowned reference when the closure and the instance it captures will always refer to each other, and will always be deallocated at the same time.

Conversely, define a capture as a weak reference when the captured reference may become nil at some point in the future.

## 为什么不一股脑儿都用weak呢？

If the captured reference will never become nil, it should always be captured as an unowned reference, rather than a weak reference.

1. 通过unowned就可以解决的问题，如果使用weak，就会显得多此一举，有时候甚至还需要额外的强制展开和 strongSelf 的判断。
2. unowned性能方面会更有优势。这里有篇关于weakunowned在不同情况下的性能分析，Twitter 上也有 Chris Eidhof、 Joe Groff 等人关于这个话题的讨论，有兴趣的同学可以看下。