- 方法增加连线返回值关键字 IBAction
- UI控件增加连线关键字 IBOutlet
- 为什么xib拖拽的UI控件用weak
"循环引用是指 A持有B 然后 B又持有A , 你中有我,我中有你"
例如:self.view持有一个button,
[self.view addsubView:button];
self.view 持有了 button , button 并不持有self.view,并不构成循环引用.
那为什么用weak:
因为view持有subviews数组,subviews数组对其中的对象为强引用,而xib拖拽控件会默认加入到subviews数组中,此时如果拖拽的ui控件使用strong,会造成多次强引用.
- **纯代码创建UI控件到底应该用strong还是用weak **
推荐使用weak , 因为UI控件肯定最终会加载到self.view上形成一个强引用,如果使用strong,控制器会持有一次,self.view又持有一次.多次强引用了.虽然不会产生太大的问题,但是不符合OC的引用计数规范.
注意通过代码创建会有这样的问题,weak创建后因为没有强引用,创建即释放了.
所以需要,避免创建即销毁.
注意点击按钮输出的self.weakbutton的内存地址
点击后输出self.weakbutton为null,就是因为没有强引用而导致地址为null.
添加之后,正常. 完美而且只有一个强引用.
参考:https://blog.csdn.net/wangjunling888/article/details/51355504
https://www.jianshu.com/p/adbf1ed14ffc