为什么 iOS 开发中,控件一般为 weak 而不是 strong

 我来答
出家人词悲
高赞答主

2016-03-02 · 大脑停止不了思考
知道大有可为答主
回答量:1.4万
采纳率:12%
帮助的人:4201万
展开全部
一般来说用weak会比较好,但是大多情况下strong也没问题。这个主要取决于这个View是否将引用它的对象强引用了。当然这种情况还是比较少的。

strong和weak的区别 strong表示保留它指向的堆上的内存区域不再指向这块区域了。 也就是说我强力指向了一个区域,我们不再指向它的条件只有我们指向nil或者我自己也不在内存上,没有人strong指向我了,weak表示如果还没有人指向它了,它就会被清...

看个人爱好,爱好不同,有的人喜欢用strong,有的人喜欢有week,
一般是alloc用strong,int,doule,bool,表示数字类型用week,字符串用copy
育知同创教育
2018-07-06 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
一般来说用weak会比较好,但是大多情况下strong也没问题。这个主要取决于这个View是否将引用它的对象强引用了。当然这种情况还是比较少的。

strong和weak的区别 strong表示保留它指向的堆上的内存区域不再指向这块区域了。 也就是说我强力指向了一个区域,我们不再指向它的条件只有我们指向nil或者我自己也不在内存上,没有人strong指向我了,weak表示如果还没有人指向它了,它就会被清...

看个人爱好,爱好不同,有的人喜欢用strong,有的人喜欢有week,
一般是alloc用strong,int,doule,bool,表示数字类型用week,字符串用copy
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8699fce
2016-03-02 · TA获得超过335个赞
知道小有建树答主
回答量:260
采纳率:0%
帮助的人:86.9万
展开全部
只要有任何strong 指向某个对象A,ARC就不会摧毁它(A)。

而weak所指向的对象B,只要没有其他strong指向该对象(B),ARC会摧毁它(B)。

顾名思义:

strong属性指的是对这个对象强烈的占有!不管别人对它做过什么,反正你就是占有着!它对于你随叫随到。
weak指的是对这个对象弱弱的保持着联系,每次使用的时候你弱弱的问它一句“还在吗”,如果没人回应(变成nil),就说明它已经离开你了(大概是被系统残忍的回收了吧)。

https://developer.apple.com/library/ios/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html
这个是 Apple developer site 里面的关于 ARC 的文档。

如果上面那个还满足不了你,看下面这个:
http://clang.llvm.org/docs/AutomaticReferenceCounting.html
这个是 LLVM Clang项目里面的对 ARC 的文档,在更底层接近编译的一级介绍了 ARC 的方方面面。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雨过天晴日丶
2016-03-02 · TA获得超过2636个赞
知道大有可为答主
回答量:1879
采纳率:91%
帮助的人:1703万
展开全部
strong 和weak,它们都是指针的属性,当遇到比如UIButton*的时候,这个property是个指针,需要指定strong或者weak。
  strong表示保存这个指针对象的内存直到结束使用。也就是说,强力的指向了一个区域,直到指向nil或者我自己也不在内存上面了。
  weak表示如果没人在用这个指针了,那就设为nil。只要还有人strong指向它那么就保留它,也就是说,不再指向它了也没有关系。事实上,weak还表示如果没有人指向它了,它就会被清除内存,同时就被指向nil,因为不能读取不存在的东西。
  ios5支持weak,设置了weak只有ios5能够在runtime的时候自动设置nil
  这不是垃圾回收,这还是reference counting,用reference counting表示堆上还有多少strong指针,垃圾回收不可控,这是完全可控的,当失去最后一个strong指针,立刻释放内存。strong、weak都是针对property的,本地变量都是strong的。
  如果把strong 和 weak 与气球联想起来或许更容易理解。只有当没有人牵住气球的绳子的时候气球才会飞走(dealloc),牵住气球绳子的人数就是retain count。很多人可以通过绳子牵住同一个气球,你可以用strong或者是weak来对相关的对象进行get/set properties和call methods操作。强【strong】就像是牵住气球的绳子,只要你牵住了绳子,气球就不会飞走。弱【weak】就像是盯着气球看,你能看到它,access properties,call methods,但是气球的绳子不在你手上,如果所有牵住气球的人都松了手,气球就飞走了,然后你也无法对它进行操作了。
  把每一个知识点运用到极致,做优秀的iOS程序员,在日新月异的科技大潮中站稳脚跟。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式