疑问,有关IBOutlet的weak & strong reference。

heartRaining 2014-09-29 03:21:29
默认情况下是weak reference。什么时候用strong reference呢?

weak reference时,应该说明当前的变量或常量不能维持其生命,那么是什么在引用它使得它不被deallocate呢?

望高手帮忙解答!
...全文
152 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
heartRaining 2014-09-30
  • 打赏
  • 举报
回复
感谢各位回答!
小copy 2014-09-29
  • 打赏
  • 举报
回复
收藏一下 以后开发用
ReyZhang 2014-09-29
  • 打赏
  • 举报
回复
如果拥有者必须“拥有”对象的指针,因此属性应设置为strong。而其他的IBOutlet对象的属性需要设置为weak,因为拥有者并不需要“拥有”他们的指针。举例来说,UIViewController的view属性是strong,因为controller要直接拥有view。而添加到view上的subviews,作为IBOutlet只需要设置为weak就可以了,因为他们不是controller直接拥有的。直接拥有subviews的是controller的view,ARC会帮助管理内存。
ReyZhang 2014-09-29
  • 打赏
  • 举报
回复
在这里推荐一篇博文,你看下吧 http://www.cnblogs.com/scorpiozj/p/3337710.html
JoeBlackzqq 2014-09-29
  • 打赏
  • 举报
回复
引用 1 楼 zhangao0086 的回复:
错了,默认是strong reference,IBOutlet的属性一般可以设为weak是因为它已经被view引用了,除非view被释放,否则IBOutlet的属性也不会被释放,另外IBOutlet属性的生命周期和view应该是一致的,所以IBOutlet属性一般设为weak。
默认是weak或strong可能跟xcode版本有关,或工程的类型有关,我用过2个不同版本的xcode,默认生成的就是不一样,不能一概而论。 楼主下次一定要记得说明下开发环境噢
Bannings 2014-09-29
  • 打赏
  • 举报
回复
错了,默认是strong reference,IBOutlet的属性一般可以设为weak是因为它已经被view引用了,除非view被释放,否则IBOutlet的属性也不会被释放,另外IBOutlet属性的生命周期和view应该是一致的,所以IBOutlet属性一般设为weak。

29,028

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧