strong
:該對象強引用delegate,外界不能銷毀delegate對象,會導致循環引用(Retain Cycles)
weak
:指明該對象并不負責保持delegate這個對象,delegate的銷毀由外部控制。當delegate指向的對象銷毀后,自動delegate = nil。
assign
:具有weak的效果,但需要手動設置nil。
為什么用weak不用assign?
assign是指針賦值,不操作引用計數,delegate用完后如果沒有設置為nil,有可能產生野指針;
而weak指向的delegate一旦用完,自動就nil了,不會產生野指針。