大多数开发者可能都会这样来实现定时器。创建定时器的时候,由于目标对象是self,所以要保留此实例。然而,因为定时器是用实例变量存放的,所以实例也保留了定时器,这就造成了循环引用。除非调用stop方法,或者系统回收实例,才能打破循环引用,如果无法确保stop一定被调用,就极易造成内存泄露。当指向XXC ...
分类:
其他好文 时间:
2016-05-03 15:47:09
阅读次数:
123
一.垃圾回收机制Python中的垃圾回收是以引用计数为主,分代收集为辅。引用计数的缺陷是循环引用的问题。在Python中,如果一个对象的引用数为0,Python虚拟机就会回收这个对象的内存。 执行f1()会循环输出这样的结果,而且进程占用的内存基本不会变动 c1=ClassA()会创建一个对象,放在 ...
分类:
编程语言 时间:
2016-05-02 11:49:30
阅读次数:
215
- (void)viewDidLoad { [super viewDidLoad]; // 如果我们不对block进行copy操作, 那么block存在于栈区, 栈区的block块不会对引用的对象进行持有 // 如果我们对block进行了copy操作, 那么block就存在于堆区, block块就会 ...
分类:
其他好文 时间:
2016-05-01 01:05:47
阅读次数:
202
内存泄漏及浪费都是每个程序员非常忌讳的事情,但是稍有不慎就会造成不可弥补的损失,这里就这能指针sheard_ptr造成的循环引用及造成循环引用的原因我给大家给出了详细的图解及举例说明,同时也提供了避免这种循环引用的解决办法,就针对弱引用这一点做出了详细的解释,就针对shared_ptr和weak_ptr这两种智能指针的作用和用法也相加说明使得读者可以从代码及图例两方面对循环引用及解决办法有更深的认识。...
分类:
其他好文 时间:
2016-04-28 12:25:26
阅读次数:
260
自从苹果在objc中添加Block功能支持以后已经过了很久。目前网上对于Block的使用有很多介绍。不过对于Block的内存管理问题,则是众说纷纭。再加上objc开始使用ARC以后,对于Block的内存管理又有了新的变化。因此在本文中笔者将根据自己的理解梳理一下Block的内存管理问题。 1.Blo ...
分类:
其他好文 时间:
2016-04-26 12:31:23
阅读次数:
147
到底什么时候才需要在ObjC的Block中使用weakSelf/strongSelf Objective C 的 Block 是一个很实用的语法,特别是与GCD结合使用,可以很方便地实现并发、异步任务。但是,如果使用不当,Block 也会引起一些循环引用问题(retain cycle)—— Bloc ...
分类:
其他好文 时间:
2016-04-26 02:02:02
阅读次数:
169
Block是一个很好用的东西,这篇文章主要来介绍:1.什么是Block?2.Block的使用?3.Block的循环引用问题及解决. 上面三点应该说是一个很大的问题,目前因为在做项目,我先仅就第三点做叙述,前两点等空闲的时候我再做补充. 1. 2. 3.Block的循环引用问题及解决. 首先我们需要明 ...
分类:
其他好文 时间:
2016-04-25 15:03:24
阅读次数:
155
在阅读《Thinking in Java》一书中,简单记录一下其中的垃圾回收机制的类型和原理。 1、引用计数 每个对象都有一个引用计数器,当引用连接着对象,引用计数器+1,当引用离开作用域或者为null时,引用计数器-1。当计数器为0时,释放对象占用的空间。缺陷:如果对象存在循环引用就会出现“对象应 ...
分类:
其他好文 时间:
2016-04-23 19:52:58
阅读次数:
122
原本我以为是我程序框架有问题...后来才知道, 无知真可怕... 大家都知道, 在block里面使用self会形成循环引用, 所以我这里就使用__unsafe_unretained __block typeof(self) weakSelf = self; 来避免, 但是在每次发出请求后(请求结果还 ...
分类:
Web程序 时间:
2016-04-22 13:26:12
阅读次数:
141
相信大家都用过CenterX 和 CenterY吧,这2个属性确实非常方便,但是有些时候会发现突然设置了CenterX CenterY不好使了,不居中了,一头雾水。这种情况 我建议第一时间去看看设置CenterX CenterY之前有没有设置size 也就是 宽和高。如果在设置宽高之前就设置了Cen ...
分类:
其他好文 时间:
2016-04-20 20:01:36
阅读次数:
150