UI界面基础

2019-04-12  本文已影响0人  HQQ_哈球球
  1. 方法增加连线返回值关键字 IBAction
  2. UI控件增加连线关键字 IBOutlet
  3. 为什么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,会造成多次强引用.
20180212162157634.jpg
  1. **纯代码创建UI控件到底应该用strong还是用weak **
 推荐使用weak , 因为UI控件肯定最终会加载到self.view上形成一个强引用,如果使用strong,控制器会持有一次,self.view又持有一次.多次强引用了.虽然不会产生太大的问题,但是不符合OC的引用计数规范.

注意通过代码创建会有这样的问题,weak创建后因为没有强引用,创建即释放了.

1.png

所以需要,避免创建即销毁.


4.png

注意点击按钮输出的self.weakbutton的内存地址


2.png

点击后输出self.weakbutton为null,就是因为没有强引用而导致地址为null.
添加之后,正常. 完美而且只有一个强引用.


3.png

参考:https://blog.csdn.net/wangjunling888/article/details/51355504
https://www.jianshu.com/p/adbf1ed14ffc

上一篇 下一篇

猜你喜欢

热点阅读