weak : UI控件 weak弱指針,一旦所指向的對象銷毀,那麼這根線就會清空,就意味着指針變量會變成null,這樣就不會出現錯誤,比如野指針錯誤.
1.為什麼UI控件用weak?而不用strong?
如果你不手動删除這個控件,一般情況下strong和weak用在UI控件上是沒有差別的,因為它一直在控制器上顯示.
但是如果連線屬性修飾用strong,你删除了這個控件,比如一個UIbutton,調用了 [self.button removeFromSupview]
,那麼這個控件一直有強指針指向着,它就不會被銷毀,占用了記憶體,造成了記憶體洩露;
2.UI控件在記憶體中的表現:
首先控制有個View,控制器的view裡面有subviews這個數組,數組裡面放着UIButton這個對象,它是用強指針指着這個UIButton對象,IBOutlet也用一根強指針着這個UIButton對象,是以直接拖控件給控制器的view,這個控件可以顯示到控制器的View上;

3.為什麼添加UIButton到storyboard,并且拖線用了weak,調用[self.button removeFromSupview]後,直接列印這個對象仍然有值?
因為有IBOutlet這根強指針指着,是以調用
[self.button removeFromSupview]
這個方法後列印button這個對象仍然有值,放在
beganTouches:
這個方法中列印,這個UIButton對象就是NULL;
轉載于:https://www.cnblogs.com/lidaxia/p/4751308.html