weak和assign的区别:
weak声明的变量在桟中会自动清空,
assign声明的变量可能不会被清空,会导致野指针错误
控件声明用weak还是strong?
1、控件用weak声明,因为Controller并不直接“拥有”控件,控件由它的父view“拥有”。使用weak关键字可以不增加控件引用计数,确保控件与父view有相同的生命周期。控件在被addSubview后,相当于控件引用计数+1;父view销毁后,所有的子view引用计数-1,则可以确保父view销毁时子view立即销毁。weak的控件在removeFromSuperview后也会立即销毁,而strong的控件不会,因为Controller还保有控件强引用。在控件addSubview后再对weak变量赋值,防止控件被立即释放。
2、还有一种理解是IB中的控件用weak,代码声明的则使用strong。
个人认为1更靠谱。