美文网首页ios
iOS 退出页面没有调用dealloc的情况

iOS 退出页面没有调用dealloc的情况

作者: xmb | 来源:发表于2017-10-30 15:18 被阅读32次

1、timer计时器退出页面没有销毁
[timer setFireDate:[NSDate distantFuture]];
[timer invalidate];
timer = nil;

2、block循环引用self
使用宏:
//解决block强引用问题 宏

define WeakSelf(weakSelf) __weak __typeof(&*self)weakSelf = self;

define StrongSelf(strongSelf) __strong __typeof(&*self)strongSelf = weakSelf;

如果是一个self,在block外用WeakSelf,block里用weakSelf。
如果是多个self,在block外用WeakSelf,block里用StrongSelf。

F424D970-728D-4CD5-8C71-5B9A8848C40F.png

3、调用了perfomSelector函数
使用[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(test:) object:nil];

4、使用@property (nonatomic, weak) id delegate

5、自定义的view(先removefromsuperview,再置为nil,即可调动view的dealloc方法)

6、block中用到了成员变量
将成员变量修改为属性

7、NSNotication remove

相关文章

网友评论

    本文标题:iOS 退出页面没有调用dealloc的情况

    本文链接:https://www.haomeiwen.com/subject/kvwppxtx.html