1. 程式人生 > >iOS開發-修飾代理delegate用weak還是assign?

iOS開發-修飾代理delegate用weak還是assign?

1.對於strong:

該物件強引用delegate,外界不能銷燬delegate物件,會導致迴圈引用(Retain Cycles)

2.對於assing:

assign是指標賦值,不對引用計數操作,使用之後如果沒有置為nil,可能就會產生野指標。

@property (nonatomic, assign, readwrite) id delegate;

即便delegate指向的物件銷燬了,delegate中依然會儲存之前物件的地址,即delegate成為了一個野指標。

3.對於weak:

指明該物件並不負責保持delegate這個物件,delegate這個物件的銷燬由外部控制。當delegate指向的物件銷燬後,delegate = nil。

修飾代理delegate用weak還是assign?
答案:使用weak。