请稍侯

iOS 中常见的内存泄漏

15 December 2020

iOS 中常见的内存泄漏

内存泄漏(memory leak):是指申请的内存空间使用完毕之后未回收。 内存溢出(out of memory):是指程序在申请内存时,没有足够的内存空间供其使用。

  1. delegate 变量没声明为 weak 类型;
  2. NSNotification没有移除通知;
  3. block强引用捕获外部变量;
  4. NSTimer在释放前未调用[timer invalidate],对target强引用;
  5. performSelector:afterDelay只有在runloop为DefaultMode时才能成功,否则会对target强引用;
  6. 提供了release函数的C语言接口;
  7. WKWebViewaddScriptMessageHandler 操作;

目前国内对iOS内存泄漏检测,用的多的主要有:

  1. Analyzer(静态分析)
  2. MLeaksFinder (第三方工具)
  3. Instruments Leaks (动态检测)

参考:
NSTimer解决循环引用的方案
NSTimer问题及各种定时器详解
MLeaksFinder 内存泄漏原理
常见的检测内存泄漏工具
iOS内存泄漏检测步骤
iOS内存优化心得