
为什么 iOS 开发中,控件一般为 weak 而不是 strong
4个回答
展开全部
一般来说用weak会比较好,但是大多情况下strong也没问题。这个主要取决于这个View是否将引用它的对象强引用了。当然这种情况还是比较少的。
strong和weak的区别 strong表示保留它指向的堆上的内存区域不再指向这块区域了。 也就是说我强力指向了一个区域,我们不再指向它的条件只有我们指向nil或者我自己也不在内存上,没有人strong指向我了,weak表示如果还没有人指向它了,它就会被清...
看个人爱好,爱好不同,有的人喜欢用strong,有的人喜欢有week,
一般是alloc用strong,int,doule,bool,表示数字类型用week,字符串用copy
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
strong和weak的区别 strong表示保留它指向的堆上的内存区域不再指向这块区域了。 也就是说我强力指向了一个区域,我们不再指向它的条件只有我们指向nil或者我自己也不在内存上,没有人strong指向我了,weak表示如果还没有人指向它了,它就会被清...
看个人爱好,爱好不同,有的人喜欢用strong,有的人喜欢有week,
一般是alloc用strong,int,doule,bool,表示数字类型用week,字符串用copy
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只要有任何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 的方方面面。
而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 的方方面面。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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程序员,在日新月异的科技大潮中站稳脚跟。
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程序员,在日新月异的科技大潮中站稳脚跟。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询