内存防止
1、Block,使用_weak声明一个代替self的新变量代替原先的self
__weak typeof(self) weakSelf=self;
self.block = ^(NSString *name){
NSLog(@"arr:%@", weakSelf.arr);
};
自定义的block用copy修饰
weak修饰的会在内存不够的时候被释放
2、delegate,用weak关键字修饰
3、nstimer等需要手动释放的没有释放
4、关键字一定要注意
@property (nonatomic, copy) NSString *string0;//新建了一个对象,string最好用copy修饰,看自己的需求啦,注意一下别产生内存泄漏就好
@property (nonatomic, strong) NSString *string1;//指向同一个对象
解决
1、analyze工具
2、instruments ---- leaks工具
3、MLeaksFinder框架
pod进去就可以了,运行的时候连接上Xcode,retain的时候会在代码中打出断电。不连接Xcode,retain的话会显示出文字在弹窗中,表明循环引用在哪里
接手一个项目都是内存泄漏,我先用MLeaksFinder把能改的比如说关键字写的不对的,block的问题等等改了,到了后面实在看不出来了就用instruments,结果双击定位到友盟的和MJRefresh里面去了,看不懂