`
nswish
  • 浏览: 108429 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

对NSAutoreleasePool的理解

阅读更多

1. NSAutoreleasePool 用来实现引用计数的自动释放。它是和线程绑定的,并且可以嵌套,以栈式的方式组织。所有对象在设定autorelease的时候,都是加入到最顶层的pool之中。


2. 在自动引用计数的环境下,不能直接使用NSAutoreleasePool的实例,而是使用@autoreleasepool{} 块来定义自动释放池的作用范围。在非自动引用计数的环境下,亦可使用块。

3. Application Kit会在每次事件触发时,自动生成一个局部的autoreleasepool,以便及时回收内存,最大限度的防止内存泄漏。在Application Kit的主线程外创建一个新的NSThread或是非Application Kit的应用,需要手工创建一个autoreleasepool。如果你的线程中没有调用到Cocoa库,则可以省去创建autoreleasepool。

分享到:
评论

相关推荐

    有时侯我们需要延迟一个对象的引用计算减一操作

    当`NSAutoreleasePool`被`drain`时,它会遍历这个数组,对其中的每个对象发送一个`release`消息,从而导致引用计数减一。 在主线程中,苹果的Application Kit框架会在事件循环的开始创建一个`NSAutoreleasePool`,...

    详细讲述在采用引用计数的内存回收方式的工作原理[定义].pdf

    引用计数是一种常见的...总之,引用计数、`alloc`、`release`、`retain`、`autorelease`以及`NSAutoreleasePool`是Objective-C内存管理的关键组成部分,理解并正确使用这些概念对于避免内存泄漏和程序崩溃至关重要。

    2015年上半年的iOS面试及笔试集锦

    在这个领域的深入理解和实践能力是iOS开发者必备的技能之一。下面将对这个主题进行详尽的阐述。 首先,我们要理解iOS中的内存管理基本原理。在iOS中,主要采用两种内存管理策略:引用计数(Reference Counting)和...

    object-C内存管理

    本练习主要关注如何有效地使用和理解这个机制,以及ARC(Automatic Reference Counting)的引入,它是Objective-C 2.0中的一个重要改进。 1. 引用计数: 在Objective-C中,每个对象都有一个引用计数,表示指向该...

    iphone 相关文档

    随着对Objective-C的理解加深,我们将过渡到更高级的主题,例如界面设计(使用Interface Builder或SwiftUI),模型-视图-控制器(MVC)架构,以及如何利用Apple的iOS SDK来访问设备的硬件特性,如相机和GPS。...

    ios面试总结

    - C语言中的函数参数传递是按值传递,这意味着在函数内部对形参的修改不会影响实参。如果想要通过函数修改指针的值,需要使用指针的指针,即二级指针。 3. **字符串常量与字符数组** - 字符串常量是不可变的,...

    Objective-C的另类教程

    这种方式允许在启动前对线程进行配置,比如设置线程优先级。 在多线程环境中,程序员需要自行管理内存,尤其是在非主线程中执行的方法。通常,我们需要使用NSAutoreleasePool来确保资源的正确释放。例如: ```objc...

    小议iOS内存管理-中文.pdf

    这里的`nil`赋值使`a`失去对对象的引用,但对象的引用计数未减少,从而引发内存泄露。 ##### AutoReleasePool机制 为简化内存管理,Apple引入了自动释放池(AutoreleasePool)。当对象被标记为`autorelease`时,它...

    2020年腾讯面试笔试宝典.pdf

    选择排序的基本思想是对记录序列进行n-1遍处理,每次将未排序部分的最小元素与该部分的第一个元素交换位置。 **快速排序**:不稳定排序算法,平均情况下时间复杂度为O(nlogn),最坏情况为O(n^2)。快速排序通过一趟...

    Objective-C培训资料

    ### Objective-C培训资料知识点概述 #### 一、程序整体语法结构 Objective-C 是一种面向对象的编程语言,它是对标准 C 语言的扩展,增加了面向对象功能和动态...理解这些基础知识对于深入学习 Objective-C 至关重要。

    OC中的内存管理

    在Objective-C(简称OC)编程语言中,内存管理是一个至关重要的概念,...同时,对循环引用和特殊引用类型的理解也必不可少,这能帮助避免许多潜在的问题。通过深入学习和实践,我们可以写出更健壮、更优化的OC程序。

    Objective-C 编程之道 iOS设计模式解析 修改MRC为ARC

    2. 检查并处理未被ARC支持的代码,如`NSAutoReleasePool`、`retainCount`等。 3. 更新任何自定义的内存管理规则,确保与ARC兼容。 4. 验证和测试整个项目,确保没有内存泄漏或其他问题。 TouchPainter这个文件可能...

    IOS面试题 OC语言基础测试及答案

    理解引用计数规则、strong、weak、unowned引用的区别以及NSAutoReleasePool的使用是面试的关键。 10. **KVC(Key-Value Coding)和KVO(Key-Value Observing)** KVC是一种间接访问对象属性的方式,通过键值路径...

    收集百度、阿里等100家企业面试题合集下.pdf

    - 编号91至95的问题可能需要对Objective-C中的类、对象、继承等概念有深刻的理解,并且能够结合实际代码示例来解释。 以上知识点是根据文件中提及的面试题目和相关的iOS开发技术点进行的解读和扩充。对于希望在...

    Foundation_Framework_Reference

    对于任何在Apple平台上进行软件开发的人员来说,理解和掌握这些基础知识都是非常重要的。通过阅读这些类的参考文档,开发者可以对这些类的使用方法有一个全面的了解,从而在实际开发中更加得心应手。

    关于block的循环引用

    - 使用NSStackBlock和NSAutoreleasePool:将Block复制到堆上,并配合使用`@autoreleasepool`,可以避免Block与对象间的强引用关系。 5. ARC(Automatic Reference Counting)与循环引用: 尽管ARC能自动管理大...

    object-c内存管理与实例

    然而,理解这些概念仍然很重要,因为有些情况下仍需要手动管理内存,比如使用`NSAutoReleasePool`或与Cocoa Touch框架交互。 接下来,我们讨论一些关键概念: - `nil`赋值:将对象赋值为`nil`会立即将其引用计数...

    ios类库以及foundation框架

    NSBlockOperation提供了对这些并发操作进行控制的方法,例如开始执行、取消操作等。 6. NSBundle类:NSBundle类用于表示应用程序包,或者框架包。它允许开发者访问应用程序包内的资源,如图片、故事板、nib文件、...

    block的循环引用导致的内存泄露的示例及解决办法

    但这需要对内存管理有深入理解,且可能导致其他问题,一般不推荐。 五、其他注意事项 - 尽量避免在Block内部修改捕获对象的属性,因为这可能导致意外的副作用。 - 使用`@autoreleasepool`来限制Block的生命周期,...

Global site tag (gtag.js) - Google Analytics