iOS基础知识9

来源:互联网 发布:linux wget下载jdk1.8 编辑:程序博客网 时间:2024/06/04 00:13

一、IBOutlet连出来的视图属性为什么可以被设置成weak?

既然有外链那么视图在xib或者storyboard中肯定存在,视图已经对它有一个强引用了,所以设置成weak比较好。

不过这样漏了个重要知识,使用storyboard(xib不行)创建的VC,会有一个叫_topLevelObjectsToKeepAliveFromStoryboard的私有数组强引用所有top level的对象,所以这时即便outlet声明成weak也没关系。

在storyboard中添加一个控件引用关系是这样的(以UIbutton为例): UIviewController->UIview->UIbutton。

此时UIviewController强引用着UIview,UIview强引用着UIbutton,IBoutlet连线到控制器的.h或者.m中作为视图的属性时用weak修饰就可以了,(觉得用 strong修饰也可以但是没有必要)。添加到子控件也是强引用:UIbutton就是添加到了UIviewController的view上。




二、如何调试BAD_ACCESS错误?

访问了野指针,比如对一个已经释放的对象执行了release、访问已经释放对象的成员变量或者发送消息。 

死循环造成。

http://www.jianshu.com/p/55650ae1c176

原创粉丝点击