為什么 iOS 開發中,xib跟storyboard拖得控件一般為 weak 而不是 strong

首先有一點,在OC中,如果對象沒有強引用,就會被自動釋放,那么為什么控件還可以設為weak?

  1. 從storyboard或者xib上創建控件,在控件放在view上的時候,已經形成了如下的引用關系,以UIButton為例:
    UIViewController->UIView->subView->UIButton
    然后你為這個UIButton聲明一個weak屬性
@property(nonatomic, weak) IBOutlet UIButton *btn;

相當于xib/sb對這個Button是強引用,你聲明的屬性對它是弱引用。

2.手動創建控件
a). 將控件聲明成strong

@property(nonatomic, strong) UIButton *btn;

那么你在實現這個控件時只需這樣:

_btn = [[UIButton alloc] init];
[self.view addSubview:_btn]

b). 將控件聲明成weak

@property(nonatomic, weak) UIButton *btn;

那么你在實現這個控件時需要這樣:

UIButton *button = [[UIButton alloc] init];
_btn = button;
[self.view addSubview:_btn];

============================
最后給的建議是:
1.如果用Stroyboard/xib拖線,用weak
2.如果自定對象,用strong(但我還是習慣用weak暫時=_=)
3.根據個人習慣最好

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容