ios 内存点滴
来源:互联网 发布:php免费源码下载 编辑:程序博客网 时间:2024/06/05 12:42
内存管理的理论知识我就不缀述了。(自行查阅,日常积累)
无论是c的手动释放内存 还是 objective-c里的arc方式,使用不当都会引起内存泄漏!
说说,最近在工程里看到的问题:
1. 犯了大错误 ”相互引用” 出了这种错误,哪种内存管理方式也帮不了,这是人祸!
比如 A.customDelegate=B ; B.cusomDelegate=A; (而且 @property(nonatomic, retain) id customDelegate)
这就是明显的相互引用。
2.关于NSTimer 的使用:
(1)
@property(nonatomic, retain) NSTimer *timer;
self.timer = [NSTimer scheduledTimerWithTimeInterval:0.04f target:self selector:@selector(check:) userInfo:nil repeats:YES];
释放:
- (void)dealloc{
...
if(self.timer){
[timer invalidate];
[timer release];
timer = nil;
}
}
这种方式理论上,没有问题,网上也好多帖子说,这么做。(例如:http://stackoverflow.com/questions/3439952/how-to-work-with-nstimer)
但我调度发现 timer每次调用时会对 self造成引用 计数加1 调用完成后,减1 (如果加1发生在 self 被释放同时就会造成 self释放不掉)
2)好的做法:
- (void)stopTimer{
if([timer isValid])
[timer invalidate]
}
释放前对象前,先停掉timer (理论支持: http://stackoverflow.com/questions/1876180/problem-invalidating-nstimer-in-dealloc)
- ios 内存点滴
- Android内存监控点滴
- JAVA内存点滴
- IOS---UIWebview用法点滴
- IOS 点滴技巧
- ios开发点滴
- ios开发点滴
- ios开发点滴
- ios开发点滴
- ios开发点滴
- iOS开发点滴-CABasicAnimation
- IOS开发点滴
- iOS开发技巧点滴
- iOS学习点滴
- IOS 点滴记录
- QT for IOS 点滴
- iOS 点滴积累
- C++内存组织结构点滴
- 散记-extern
- Oracle DataPump”EXCLUDE“参数和限制为4000字节
- SQL Server数据库中批量替换数据的方法
- 字符串匹配
- ARM汇编之寄存器
- ios 内存点滴
- C#中的方括号的语法及作用
- Oracle开发专题之:%TYPE 和 %ROWTYPE
- error LNK2005: _DllMain@12 已经在 XXXX.obj 中定义
- Emmet 学习之路 - 1 工具安装
- WPF与输入法冲突研究之三:韩文输入法在不同平台,WinForm/WPF下的区别
- 颜色 16进制对照表
- [笔记] eclipse3.7中有个根据wsdl生成webservice客户端的向导
- 修复/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 问题