iOS--造成dealloc不调用的原因

原创 2016年08月30日 11:31:48

1.ViewController中存在NSTimer

[NSTimer scheduledTimerWithTimeInterval:1.0 
                                 target:self 
                          selector:@selector(updateTime:) 
                               userInfo:nil 
                                repeats:YES];

2.ViewController中有关的代理,一个比较隐秘的因素,你去找找与这个类有关的代理,有没有强引用属性?比如一个代理的delegate应该是 assign 的现在是retain

3.ViewController中有Block

Block体内使用实例变量也会造成循环引用,使得拥有这个实例的对象不能释放。
例如你这个类叫OneViewController,有个属性是NSString *name; 如果你在block体中使用了self.name,那样子的话这个类就没法释放。
要解决这个问题,MRC下只需

__block Viewcontroller *weakSelf = self;

ARC下将block 换为 weak
版权声明:欢迎转载!

相关文章推荐

记录iOS viewController无法dealloc的原因分析和解决过程

最近的一个项目,遇到一个很棘手的问题。有一个视图里面要实现网络视频播放,网络通信协议,收到的数据在UI动态显示出来。为了实现这些功能,采用了系统的几个功能,timer,Core Animation,A...

IOS开发之 ---- ARC下的Dealloc保留原因[转]

众所周知,iOS开发的时候,使用ARC的话,dealloc函数是不需要实现的,写了反而会出错。 但有些特殊的情况,dealloc函数还是需要的。 比如,在画面关闭的时候,需要把ViewCo...

IOS开发基础之──viewDidUnload/dealloc调用分析

在IOS开发中,内存管理重要性不言而喻,而如何理解viewDidUnload/dealloc调用对理解内存管理的实质有着非常重要的作用,下面将网友对两者的调用时机摘抄如下,这些分析应该能对理解程序的生...
  • pjk1129
  • pjk1129
  • 2011年07月21日 16:07
  • 8528

iOS中正确处理dealloc方法

当我们继承类的时候,子类实例在构造的时候顺序是先高用父类的构造方法,再调用子类的构造方法。在c/c++是如此,在objc中也是如此,在iOS开发中,我们会看到这样的代码: - (void)ini...
  • favormm
  • favormm
  • 2012年04月03日 09:47
  • 7755

IOS开发(48)之由init、loadView、viewDidLoad、viewDidUnload、dealloc的关系说起

对于iphone开发人员来说,内存管理是极为重要的技巧,哪怕程序的功能再强大,设计再漂亮,如果内存控制不好,也难逃程序莫名退出的噩运,这与网页开发是完全不同的。 内存控制里面有很多门道,在这里分...

iOS 之init、loadView、viewDidLoad、viewDidUnload、dealloc

由init、loadView、viewDidLoad、viewDidUnload、dealloc的关系说起 init方法 在init方法中实例化必要的对象(遵从LazyLoad思想) ...

iOS中的一些内存问题,block,NSTimer,dealloc

作为一个固守于不用ARC的人,一直对于内存管理比较纠结。     今天又遇到了。在Block中和NSTimer下,发现一些VC不再执行dealloc。 总结: ...

iOS的init、loadView, viewDidLoad, viewDidUnload, dealloc的关系

IOS的init、loadView, viewDidLoad, viewDidUnload, dealloc的关系    转自:http://www.cocoachina.com/bbs/...

iOS开发 ARC下dealloc的使用

在MRC时代,我们需要在 dealloc中做很多,比如释放对象,等等; 如今我们已经进入ARC时代,对于普通对象的释放,系统已经帮我们做好了; 那是否可以高枕无忧了呢?在ARC下我们应该做什么? ...

IOS开发之内存管理--dealloc该写些什么

在非ARC开发环境中,dealloc是类释放前,清理内存的最后机会。到底那些变量和属性该释放呢,一些特殊的类(nstimer,observer)该怎么释放。需要注意的是不释放会引起内存泄露,过度释放也...
  • lpsoga
  • lpsoga
  • 2013年12月19日 17:13
  • 728
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS--造成dealloc不调用的原因
举报原因:
原因补充:

(最多只允许输入30个字)