iOS - autoreleasePool

简介: iOS - autoreleasePool

是什么


根据官方文档NSAutoreleasePool 定义


NSAutoreleasePool:

An object that supports Cocoa’s reference-counted memory management system.


本质是一个1. 对象,可以管理cocoa 对象内存的引用计数


autorelease pool :

An autorelease pool stores objects that are sent a release message when the pool itself is drained.


autorelease pool 里存放一些对象, 当pool释放的时候,会给pool里的这些对象发送release消息


官方说明:


  • autorelease pool是个对象


  • 在池子释放时,对池中的对象发送release消息(只是引用技术-1,是否释放对象不确定)


  • 系统在主线程的每次runloop开始时创建pool。runloop结束时销毁pool,从而释放


  • 每个线程维护他自己的autoreleasePool对象堆栈,当线程终止时,它会自动清空所有与之关联的autorelease pools


objc_autoreleasePoolPush源码流程走向


image.png

未命名文件-4.png


参考


官方文档NSAutoreleasePool


相关文章
|
存储 安全 API
iOS-底层原理 33:内存管理(三)AutoReleasePool & NSRunLoop 底层分析
iOS-底层原理 33:内存管理(三)AutoReleasePool & NSRunLoop 底层分析
182 0
iOS-底层原理 33:内存管理(三)AutoReleasePool & NSRunLoop 底层分析
|
缓存 编译器 iOS开发
iOS - autoreleasepool 源码
AutoreleasePool:自动释放池是 Objective-C 开发中的一种自动内存回收管理的机制,为了替代开发人员手动管理内存,实质上是使用编译器在适当的位置插入release、autorelease等内存释放操作。当对象调用 autorelease 方法后会被放到自动释放池中延迟释放时机,当缓存池需要清除dealloc时,会向这些 Autoreleased 对象做 release 释放操作。
|
存储 安全 API
iOS AutoReleasePool 自动释放池以及RunLoop分析(下)
1.runloop是什么? 2.runloop和线程的关系? 3.runloop是什么时候创建的?
643 0
|
存储 对象存储 iOS开发
iOS AutoReleasePool 自动释放池以及RunLoop分析(上)
自动释放池 -> 内存自动回收机制 -> 变量release的时机延迟 对象 -> 正常情况下,变量会在超出其作用域的时立即release -> 加入到了自动释放池中 -> 不会立即释放,会等到runloop休眠/超出autoreleasepool作用域{}之后才会被释放
292 0
|
1天前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
111 3
|
1天前
|
存储 iOS开发
iOS 开发,如何进行应用的本地化(Localization)?
iOS 开发,如何进行应用的本地化(Localization)?
126 2
|
1天前
|
存储 数据建模 数据库
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
45 0
|
1天前
|
API 开发工具 Android开发
iOS 和 Android 平台的开发有哪些主要区别?
iOS与Android开发区别:iOS用Objective-C/Swift,App Store唯一下载渠道;Android用Java/Kotlin,多商店发布(如Google Play、华为市场)。设计上,iOS简洁一致,Android灵活可定制。开发工具,iOS用Xcode,Android用Android Studio。硬件和系统多样性,iOS统一,Android复杂。权限管理、审核流程及API各有特点,开发者需依据目标平台特性进行选择。
39 3
|
1天前
|
前端开发 Android开发 iOS开发
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
【4月更文挑战第30天】Flutter 框架实现跨平台移动应用,通过一致的 UI 渲染(Skia 引擎)、热重载功能和响应式框架提高开发效率和用户体验。然而,Android 和 iOS 的系统差异、渲染机制及编译过程影响性能。性能对比显示,iOS 可能因硬件优化提供更流畅体验,而 Android 更具灵活性和广泛硬件支持。开发者可采用代码、资源优化和特定平台优化策略,利用性能分析工具提升应用性能。
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
|
1天前
|
存储 Swift iOS开发
使用Swift开发一个简单的iOS应用的详细步骤。
使用Swift开发iOS应用的步骤包括:创建Xcode项目,设计界面(Storyboard或代码),定义数据模型,实现业务逻辑,连接界面和逻辑,处理数据存储(如Core Data),添加网络请求(必要时),调试与测试,根据测试结果优化改进,最后提交至App Store或其它平台发布。
35 0