weak keyword 是為了避免 ownership cycle,所謂 ownership cycle 就是當 Object A reference Object B 而 Object B 又 reference Object A 時,兩個 Objects 就會都無法釋放(Object 只有在沒有 strong reference 時才會被回收)
如果 Object 只有weak references ,也是會被回收。
所以此例 A 跟 B 其中一個用 strong reference 另一個用weak 就可以了
通常要用weak的地方就是 delegate
當然 UI 的東西也常常用 weak,但那是為了強調「ViewController」並不是 View Outlet 的 owner。
另外還有一個 keyword 叫做 unowned,下次再介紹
沒有留言:
張貼留言