iOS 内存泄漏

一、正常的代理weak弱化都知道

二、最常用的还是block内部的弱化 这个需要注意的比较多。注意 @weakify(self);和 @strongify(self);的搭配使用的情况。下方列举:

例如: 

1.正常的成员函数  使用后直接调用即可

// 踢人

@weakify(self);

self.playerView.longPressBlock = ^(NSDictionary * _Nonnull playerInfo) {

      @strongify(self);

     [self alertKickout:playerInfo];

};

2 在block内部使用 在大括号内的成员变量时

@interface MGPGCreateRoomVC () {

/// 观战玩家

NSMutableArray *watchPeopleList;

}

需要这样在此弱化引用

self→watchPeopleList

3 在block使用属性变量的时候 

/// 底部工具

@property (nonatomic, strong) MGPGCreateRoomBottomView *bottomView;

需要这样使用

self→_bottomView

4 另外需要注意的是 在block内部只要有修改外部数据或者常见的cell数据改动 也要做响应的cell弱化

@weakify(cell);

@strongify(cell);

三、循环引用造成的泄漏

子视图或者cell中对当前页面的持有对象不能是强引用,尽量assign或者weak,否则会造成循环引用,从而引发泄漏。

四、timer

注意的就是 在dealloc之前 提前把timer销毁

调用 invalidate方法

保险起见 在加一个 self.timer = nil;

你可能感兴趣的:(iOS 内存泄漏)