工作问题小记 navigation push和popviewcontroller dealloc问题

事件,在instruments检查内存泄漏时发现其中一个viewcontroller在navigation做pop操作后未做dealloc,导致内存泄漏

push操作代码如下:

    ViewController_leaveAMessage *leaveMessage = [[ViewController_leaveAMessage alloc] initWithNibName:@"ViewController_leaveAMessage" bundle:nil];

    leaveMessage.toId = self.friendRS.userId;

    [self.navigationController pushViewController:leaveMessage animated:YES];

    [leaveMessage release];


pop操作后viewcontroller记述理应为0,从而调用dealloc。但是这断点后发现pop后未调用dealloc,说明该viewcontroller在其他地方还有引用。可是冲上面代码看出,正常情来说不该出该问题。后在push操作前后加log查看retainCount,发现该viewcontroller在push后retainCount增加了6,push其他viewcontroller其retainCount仅增加5.

其后逐条删除该viewcontroller中得viewdidload方法中得代码发现,其中因在viewdidload中执行

    timer = [NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(showLblTimeRecorderOrPlayer) userInfo:nil repeats:YES];

导致该viewcontroller得retainCount在push操作后多加 1 。         总:timer应在pop前 invalidate。navigation得push操作在操作中就会执行相应viewcontroller得viewdidiload。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值