美文网首页
iOS内存泄漏的常见情况

iOS内存泄漏的常见情况

作者: husky_duang | 来源:发表于2016-09-02 14:28 被阅读9735次

iOS内存泄漏的常见情况

1.声明delegate为strong类型,简而言之,如果父VC持有子VC,并设置子VC的delegate为self(也就是父VC),这样的结果就是子VC也间接持有了父VC,造成循环引用,在Pop子VC的时候不会调用delloc。

  • 2.timer是否持有self,我们一般要执行一个timer的时候会用

    (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti  target:(id)aTarget  selector:(SEL)aSelector  userInfo:(id)userInfo  repeats:(BOOL)yesOrNo   
    

这里的aTarget一般是self,这时候就需要注意了,如果在你退出的时候这个timer还在执行的话由于这个timer会持有self,所以delloc也不会调用,这里可以用weakSelf代替self也是没有问题的。

  • 3.最常见的就是block导致的循环引用,由于在重构APP中用到了MVVM架构,使用了大量的信号机制,导致block到处飞(哈哈),解决的最多的就是这种了,解决方法也很简单,就是在block外声明
    __weak type(self) weakSelf = self,
    在block中用weakSelf就可以了,还有就是在block中如果使用了成员变量的下划线形式也要改成weakSelf.PropertyName的形式。MVVM中定义了宏对@weakify(self)和@strongify(self)可以理解为__weak type(self) weakSelf = self的简化形式,可以拿来直接使用。

  • 3.图片没释放,instrument调试后,发现没被释放的全是imageIO,差不多就知道了,把读图的方式,从[UIImage imageNamed:@""],改成imageWithContentsOfFile,就可以了。

- 4.使用GPUImage处理拍照的时候,内存稳定不明增长。是Xcode7.1的问题。。只在debug的时候导致内存崩溃,release的时候并不会造成内存溢出,所以可以不必管它。

  • 5.CoreFoundation对象(C对象) : 只要函数中包含了create\new\copy\retain等关键字, 那么这些方法产生的对象, 就必须在不再使用的时候调用1次CFRelease或者其他release函数

相关文章

  • iOS内存泄漏有哪些

    iOS内存溢出和内存泄漏的情况

  • 记录电商公司面试

    面试记录 问了常见的内存泄漏常见有哪些 Handler的内存泄漏情况 activity,window,view之间...

  • iOS内存泄漏的常见情况

    iOS内存泄漏的常见情况 1.声明delegate为strong类型,简而言之,如果父VC持有子VC,并设置子VC...

  • iOS内存泄漏的常见情况

    iOS内存泄漏的常见情况 1.声明delegate为strong类型,简而言之,如果父VC持有子VC,并设置子VC...

  • iOS内存泄漏的常见情况

    iOS内存泄漏的常见情况 1.声明delegate为strong类型,简而言之,如果父VC持有子VC,并设置子VC...

  • Android内存泄漏相关

    问题1 内存泄漏的基本定义是什么?内存泄漏有什么危害?问题2 开发中常见的内存泄漏的情况有哪些?什么原因造成的?怎...

  • iOS 内存泄漏三两事

    iOS 内存泄漏三两事 iOS 内存泄漏三两事

  • instruments - leaks

    iOS开发中,难免会出现内存泄漏的情况,此处通过instruments 中的 leaks工具来检测程序的内存泄漏问...

  • Xcode调试工具

    一.静态内存分析工具 编译阶段查找内存泄漏等问题 1.常见内存泄漏问题 常见的内存泄漏除了循环引用,CoreFou...

  • 常见内存泄漏情况梳理

    一、循环引用, 以两个实例为例,循环引用产生于两个实例都强引用的对方,而两个实例的释放都依赖于对方的释放,最终都无...

网友评论

      本文标题:iOS内存泄漏的常见情况

      本文链接:https://www.haomeiwen.com/subject/ogohettx.html