iOS的视图控制器pop或dismiss后,dealloc函数不被调用的几个原因

当视图控制器执行popViewControllerAnimated或dismissViewControllerAnimated方法后,dealloc函数始终未被调用时,可能是由以下几点当中的某一点或几点引起的:

(1)初始化某个UIView时,使用strong修饰词修饰该view的某个属性,导致强持有当前视图控制器,从而造成循环引用,引起内存泄漏;

(2)ViewController中强引用代理(delegate),应该使用weak修饰词来修饰;

(3)ViewController中使用了block,且存在循环引用。使用__weak修饰;

(4)ViewController中创建了定时器NSTimer,导致引用计数+1.解决方法是在viewWillDisappear中执行[_timer invalidate]和_timer=nil.


5 . WKWebViewController 需要在viewWillDisappear: 方法中移除 js回调  (由于新增了回调 没有移除 导致不走dealloc  每次跳转到web 内存都会增加  以此记录)

[self.contentWebView.configuration.userContentController removeScriptMessageHandlerForName:@"***"];

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值