一、三方框架
二、Block循环引用
三、delegate循环引用
四、NSTimer循环引用
五、非OC对象
六、地图类
七、大次数循环内存暴增
一、AFNet(三方框架)
如 AFNet 的作者已经在 git 上指出建议使用者在相同配置下保证 AFHTTPSessionManager 只有一个,进行全局管理,因此我们可以通过单例形式进行解决。
二、Block 循环引用
self.block = ^{
调用self或其所属属性,要小心闭环的出现。
[self func];
};
__weak typeof(self) weakself = self;
self.block = ^{
__strong typeof(self) strongself = weakself;
[strongself func];
};
三、delegate 循环引用
需要注意互相强引用内存无法释放的问题
@property (nonatomic, weak) id delegate;
四、NSTimer
不能在 dealloc 方法中执行 定时器停止并滞空的操作,这样会造成互相等待的场景。需要注意调用时机从而避免内存无法释放。
五、非OC对象内存处理
如滤镜处理
CGImageRef
需要手动内存释放
CGImageRelease()
C中的malloc 需要 free
六、地图类
使用完毕时将地图、代理等滞空为nil,地图中标注(大头钉)的复用,并且在使用完清空标注数组等。
七、大次数循环
@autoreleasepool {}