一、正常的代理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;
网友评论