当前位置:首页 > 内存 > 正文

iOS内存泄漏(内存溢出和内存泄漏的区别)

  • 内存
  • 2024-07-02 21:24:42
  • 5751

一、iOS如何正确使用block才不会造成内存泄漏

Buck定义

Block作为C语言的扩展,并不是一种技术。其他语言中的闭包或lambda表达式也是如此。


作用

块可以访问函数外部和词法作用域内部的外部变量的值。也就是说,Block不仅承担着服务的角色,还承载着服务执行的范围。


Block类型

NSGlobalBlock:类似的功能,放置在文本段中;库内存,函数返回后该块就会失效;在他的Reference的障碍内,他已经把自己缩小为强指针了。确保它们不会被破坏。

解决办法:
__weaktypeof(se)selfVc=self;,定义一个self的替代品,并用ruo指针引用它。

请注意,Objective-C不支持iOS上的GC机制。使用Lock时,必须自己管理内存。


二、ios能不能监测到静态库中有内存泄漏已经有一些工具可以帮助我们发现内存泄漏,但它们需要大量的手动干预:
打开Xcode并选择构建进行分析。
加载Instruments工具
使用应用程序并尝试重现尽可能多的场景和行为
查看仪器的泄漏/内存
找到内存泄漏的根本原因
修复问题
这意味着很多每次都需要手动操作,导致我们在开发周期中无法尽早定位并修复内存泄漏问题。
如果这个过程可以自动化,我们就可以快速发现内存泄漏,而无需开发人员过多干预。为此,我们构建了一系列工具来自动查找并修复代码存储库中的一些问题。这些工具包括:FBRetainCycleDetector、FBAllocationTracker和FBMemoryProfiler