问题标签 [autorelease]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
1413 浏览

iphone - iPhone:自动释放对象的内存泄漏?

我正在使用 XMLParser 类,它包含一个带有 XMLElement 对象的数组。正在使用自动释放操作分配 XMLElement。但是,由于某种原因,我在这条线上遇到了内存泄漏(使用仪器):

我还在调用者类中发布了 XMLParser 对象。我在下面的 XMLParser 源代码中突出显示了“有问题的”行作为注释。

我真的尝试了一切来修复它,但不幸的是我不明白为什么会发生这种情况。任何帮助表示赞赏!

非常感谢!

0 投票
4 回答
231 浏览

iphone - Objective C,内存管理

1)使用retain的原因是什么?

例如,在 setter 方法中:

2)自动释放方法:是删除旧对象还是准备新对象?

3) 为什么在输入对象处调用保留方法?

是错的?为什么?

0 投票
2 回答
690 浏览

objective-c - 从 NSArray 返回的自动释放对象?

我正在编写一个NSArray类别以包含-objectAtRandom从随机索引返回对象的消息(类似于 Python 的选择)。

我应该在返回之前自动释放这个对象吗?我相信我不应该,但我不确定......

0 投票
1 回答
290 浏览

cocoa - appkit 应用程序中的自动释放池

我很难准确理解何时在 AppKit 应用程序中创建和发布自动释放池。

例如,如果我有一个覆盖 init 的 ApplicationController 类,是否有一个自动释放池在它开始之前被创建并在它结束后被耗尽?

0 投票
2 回答
789 浏览

objective-c - 使用自动释放时,它实际上是什么时候释放的?

有时我想知道什么时候会自动发布。我在各种对象的dealloc中添加了一个NSLog,但我找不到任何有用的东西。

使用自动释放时什么时候释放?它是不可预测的,还是有一些额外的线程在运行?谢谢。

0 投票
1 回答
2191 浏览

objective-c - 自动释放与释放

当我需要一个临时使用的数组时,它们之间有什么区别:

1:

2:

3:

我更喜欢 2 号,因为它更短。使用数字 1 或 3 有什么好的理由吗?

0 投票
1 回答
480 浏览

iphone - 我必须保留一个 NSMutableArray 虽然它是一个属性

我是新手,但我阅读了很多关于内存管理的内容,并且真的试图自己找到答案。这听起来很基本,但我显然不明白。我在 .h 中有一个 NSMutableArray 作为属性:

我合成它并在(void)dealloc中释放它。为了填充数组,我有一个方法 - (void)updateRecordList 并在其中:

编辑:下一行:

其中 DocumentDatabase 是具有类方法 getDocumentListSortedByDate 和 getDocumentList 的不同类。以下是 getDocumentListSortedByDate 中发生的情况:

并在 getDocumentList

这在我第一次调用 updateRecordList 时有效,但在添加文件并第二次调用 updateRecordList 后,它崩溃(使用 NSZombies): * -[NSCFNumber dealloc]: message sent to deallocated instance 0x7504c90。通过大量日志记录,我将问题缩小到 updateRecordList 中的上述行,如果我将其更改为:

我的结论是 getDocumentList 中的数组在到达之前已经自动释放。所以我的问题是:
1. 为什么我必须保留它?这不应该通过声明财产(保留)自行发生吗?或者,换句话说,为什么数组过早地自动释放(假设这是正在发生的事情)?
2.当我给self.documentListArray分配一个新数组时,旧数组会自动释放吗?如果我在获得新的 documentList 之前尝试自己释放它,它也会崩溃。

提前感谢您的任何回复。

编辑:也许我是个白痴:我没有提到 documentListArray 是 UITableView 的数据源(请参阅顶部添加的行)。我怀疑我在填充表格视图时做错了什么,并且数组被保留了......?但是,它确实在分配属性时崩溃,而不是在 reloadData 时崩溃。如果我正确使用 UITableViewDataSource 协议,我会回去学习。感谢大家,您的回答让我有望走上正轨。解决后会更新。

EDIT2:它现在可以在没有保留的情况下工作,我想我理解为什么:我进行了广泛的调试,发现 Objects 中包含的 Objects 添加到了 nil 的数组中。特别是在 encodeWithCoder 的深处,我在赋值时没有使用“self”。解码时,那些值为零。自从我改变了它,它似乎工作了。我怀疑没有分配新数组会导致崩溃,而是 TableView 会读取新数组——甚至在我调用 reloadData 之前。这将导致 Davids 的同步访问问题。谢谢大家的帮助。

0 投票
1 回答
268 浏览

objective-c - 安全的 NSArray 访问

我希望objectAtIndex:返回一个保留和自动释放的对象供我使用,但我对自动释放池的测试表明它们没有。

在这种情况下,在我使用 objectAtIndex 检索对象的引用但我有机会使用或保留该引用之前,如何保护自己免受另一个线程从数组中删除对象?

0 投票
2 回答
182 浏览

iphone - 关于 iPhone 内存管理的说明(自动释放)

我知道在这里之前已经回答了一个类似的问题,但我只是想确保我能更好地理解它。这是我的场景...

我有一个返回分配的 UIImageView 的辅助类方法,如下所示。

}

然后,在我的 UIViewController 方法之一中,我正在使用它。

我的问题是关于如何释放这个内存。我没有使用自动释放池(除了创建的应用程序),并且该变量不是 iVar/Property(因此在调用 dealloc 时它不会被释放)。在这种情况下,我是否负责在调用后释放内存?自动释放何时发挥作用?谢谢您的帮助!

0 投票
3 回答
3102 浏览

objective-c - NSString componentsSeparatedByString: 返回自动释放的数组吗?

在以下方法中,我不确定为什么释放其中一个数组会导致异常。我能看到的唯一原因是如果componentsSeparatedByString返回一个自动释放的数组,但我看不到文档提到它确实如此。

谁能确认阵列是否自动释放?如果是这样,我怎么知道/为什么我应该知道?
是否可以通过代码检查对象的任何一个实例是否自动释放?