IOS-57-导致内存未释放的常见原因(现象:dealloc不执行等)
来源:互联网 发布:苹果部落冲突数据覆盖 编辑:程序博客网 时间:2024/04/27 22:46
几种原因:
1.代理声明应为weak,默认strong强引用会导致计数器加1,无法释放内存;应这样声明:
@property (nonatomic, weak) SampleClass *sampleClass;
2.NSTimer定时器未释放,会导致计数器加1,无法释放内存。
应这样先关闭定时器:
/** * 开起定时器加载 */- (void)loadingStartAnimation { _loadTimer = [NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(customAnimation) userInfo:nil repeats:YES]; [_loadTimer fire];}// 关闭定时器- (void)invalidTimer { if (_loadTimer) { [_loadTimer invalidate]; _loadTimer = nil; }}
3.死循环:在getter方法里使用self.
如下:
#pragma mark getter- (UITableView *)meTableView { if (_meTableView == nil) { _meTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, kMAIN_SCREEN_WIDTH, kMAIN_SCREEN_HEIGHT - kTAB_BAR_HEIGHT) style:UITableViewStylePlain]; _meTableView.delegate = self; _meTableView.dataSource = self; self.meTableView.backgroundColor = Background_Color; //本方法是getter方法,不能使用self!!! } return _meTableView;}
4.block里面不能直接用self,需转为weak弱类型
__weak typeof(self) weakSelf = self;//转为weak弱类型 [self.network doRequestUsingCookieWithType:TLDRequestType_Get urlString:kGetRechargeRecordURL paramsDic:paramDic fromDelegate:self successBlock:^(AFHTTPRequestOperation *operation, id resultData) { [weakSelf requestRechargeRecordFinished:resultData]; } failBlock:^(AFHTTPRequestOperation *operation, NSError *error) { [weakSelf.HUD showToastWithText:kRequestFailString]; }];
0 0
- IOS-57-导致内存未释放的常见原因(现象:dealloc不执行等)
- 关于dealloc不执行的原因
- iOS--造成dealloc不调用的原因
- IOS ViewControl无法释放(不走“-(void)dealloc”方法)&&ViewControl释放后内存值不下降
- iOS内存话题: performSelector 导致不立即 dealloc
- iOS dealloc 不执行或延迟执行的问题
- iOS dealloc 不执行或延迟执行的问题
- iOS中造成dealloc不调用的原因
- 后释放super dealloc的原因
- iOS内存话题: NSTimer 导致无法 dealloc
- ios 控制器不调用dealloc原因详解
- 指针未释放导致内存泄漏的坑
- [super dealloc]内存释放的先后顺序
- 使用dismissModalViewControllerAnimated 不调用dealloc 内存不释放解决方法
- 内存释放[super dealloc]
- android 中可能导致内存无法释放的原因(更新中)
- 导致crash等异常的常见原因分析
- iOS开发--- WKWebView导致Controller不调用dealloc
- 牛顿下山法
- python 刷题:实现队列
- POJ 3675 三角剖分
- do { x } while (__LINE__ == -1)
- viewPager 镶嵌fragment 报StackOverflowError
- IOS-57-导致内存未释放的常见原因(现象:dealloc不执行等)
- 对图片的压缩处理
- 【编程工具】MyEclipse中的常用快捷键
- wpf Listbox用collectionview分组展示效果
- 学习英语
- CF 596A. Wilbur and Swimming Pool 【计算矩形面积】
- .net4.0调用非托管DLL的异常捕获
- poj2299(转)
- poj1328 radar installation