天天看點

ios UI控件引用用weak,UI控件代理屬性必須用weak

在Objective-C的ARC模式中,

1

id obj1 = [[NSObject alloc] init];

這裡雖然沒有顯示的聲明為__strong,但是Objective-C預設聲明的一個對象就為__strong,即:

1

id obj1 = [[NSObject alloc] init];

1

id __strong obj1 = [[NSObject alloc] init];

是等價的。

在強引用中,有時會出現循環引用的情況,這時就需要弱引用來幫忙(__weak)。

強引用持有對象,弱引用不持有對象。

強引用可以釋放對象,但弱引用不可以,因為弱引用不持有對象,當弱引用指向一個強引用所持有的對象時,當強引用将對象釋放掉後,弱引用會自動的被指派為nil,即弱引用會自動的指向nil。

ios UI控件引用用weak,UI控件代理屬性必須用weak