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方法不调用

ios的viewcontroller生命周期是 init -> loadView -> viewDidLoad -> viewWillAppear -> viewDidAppear -> viewWi...
  • u011452278
  • u011452278
  • 2017年07月28日 15:03
  • 747

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

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

iOS中造成dealloc不调用的原因

问题描述最近在一个项目中用到了地图,发现在地图页面和上一个页面间反复切换回出现内存爆增的情况,就像吃了炫迈一样根本停不下来(直到app内存爆表,app闪退收场)。造成这一结果的根本原因是地图的mapV...
  • huangchnegdada
  • huangchnegdada
  • 2016年04月07日 09:27
  • 12754

ios 控制器不调用dealloc原因详解

虽然现在大部分都是ARC工程,系统帮你处理内存管理,但这不等于开发者不用管理内存。比如通知的移除、baiduSDK中的变量置nil等都需要重写dealloc方法来实现。注意,ARC工程是可以重写dea...
  • AllInOrNothing
  • AllInOrNothing
  • 2015年01月30日 16:26
  • 4839

dealloc方法不调用

今天改版了一个旧的页面,但是测试的时候发现没有改版的一个功能竟然失效了,测试发现是因为该控制器POP的时候,dealloc方法没有调用,导致数据没有被重置。上网一查,控制器不走dealloc方法的原因...
  • fanxiaomeng92
  • fanxiaomeng92
  • 2016年10月20日 18:32
  • 1393

ios关于dealloc 不调用的问题

1.循环引用(多发生在对象有一个timer属性,返回时释放timer即可,先invalidate,再置为nil) 2.自定义的view(先removefromsuperview,再置为nil,即可调动...
  • wqs1028
  • wqs1028
  • 2017年03月27日 17:01
  • 821

controller 不能释放,不走dealloc方法的4种可能

第一种: controller中使用了计时器 NSTimer 使用后没有销毁 导致循环引用 self.playerTimer = [NSTimer scheduledTimerWithTime...
  • flg1554112450
  • flg1554112450
  • 2017年04月18日 15:07
  • 1131

控制器在退出的时候不执行dealloc方法

今天写代码时需要在dealloc里移除所有的通知,但是却发现控制器pop后不执行dealloc方法. 查到这句话:The dealloc method was not being called if...
  • jx1152300755
  • jx1152300755
  • 2016年03月23日 13:38
  • 914

iOS 控制器POP后dealloc方法不走,通知监听无法移除的问题

最近项目突然被说会闪退,且无法重现,时有出现。接到问题后一步步排查,终于发现问题。 表现:某个页面的通知观察者方法被多次调用! 原因查找: 1、通知的监听这里我写在viewDidLoad里面,多次被调...
  • txz_gray
  • txz_gray
  • 2017年06月14日 18:38
  • 1031

为何ViewController释放后不走dealloc

在一个项目中,如果ViewController使用完成之后,发现这个东东并没有释放掉,dealloc方法不走,看着那个内存蹭蹭的网上增,就跟自己的火气一样。相信大家都知道如何去释放一个不用的ViewC...
  • WQ5201314O
  • WQ5201314O
  • 2015年01月30日 17:37
  • 4010
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS--造成dealloc不调用的原因
举报原因:
原因补充:

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