ios开发ARC,IBOutlets之strong与weak
问题是解决了,但是对IBOutlets什么时候用strong,什么时候用weak还是没有一个清楚的认识,于是去apple doc上看了下资料,发现下面一段:
From a practical perspective, in iOS and OS X outlets should be defined as declared properties. Outlets should generally be weak, except for those from File’s Owner to top-level objects in a nib file (or, in iOS, a
storyboard scene) which should be strong. Outlets that you create will therefore typically be weak by default, because:
Outlets that you create to, for example, subviews of a view controller’s view or a window controller’s window, are arbitrary references between objects that do not imply ownership.
The strong outlets are frequently specified by framework classes (for example, UIViewController’s view outlet, or NSWindowController’s window outlet).
@property (weak) IBOutlet MyView *viewContainerSubview;
@property (strong) IBOutlet MyOtherClass *topLevelObject;
英文不是太好,大致理解意思是说,在 ARC 中,一般outlet属性都推荐使用 weak, 而 File's Owner连接到 nib 的顶层对象应该使用 strong。通俗一点说就是,如果是你自定义的view,不是做为主视图的子视图直接显示,而是你自己实例化创建出来并加入主视图里的,那么你需要自己保留对象所有权,需要使用strong。
关于这一点,参考了念茜blog里的文章:http://blog.csdn.net/yiyaaixuexi/article/details/7864974
总结:
之所以有上面困惑,是对对象所有权问题的没理解透彻,找到问题的根源,才能拔云见日。
最新文章
- 使用git删除远程仓库文件
- Android中Java与JavaScript之间交互(转)
- HDU5855 Less Time, More profit(最大权闭合子图)
- 数据结构-AVL树的旋转
- ORACLE常用脚本示例
- Networking - Ethernet II 帧
- Android仿微信界面--使用Fragment实现(慕课网笔记)
- Redis是什么
- Ajax新玩法fetch API
- css在盒子中垂直居中和固定居中
- elementUI
- python 游戏(猜数字)
- app电池续航上&;&;下--Android自动化测试学习历程
- python学习之老男孩python全栈第九期_数据库day001知识点总结 —— MySQL操作数据库以及数据表、基本数据类型、基本增删改查、外键定义以及创建
- windows下测试flask的例子tuorial报错flask KeyError: 'DATABASE'
- Vuex、axios以及跨域请求处理
- web.config文件配置解决网站上传大文件限制
- leetcode 加一
- Oracle下的ArcSDE创建的空间数据库的备份与恢复
- ListView里面adapter的不同分类的item