2

我已经从使用 NSCoder 编码中带回了一个根对象,并且不知道如何内存管理这个返回的对象。我用一个自动释放池包围了它,但是这个对象并没有随池一起出去。代码在这里,见第 289 行代码可能会随着 Git Hub 提交而改变,但最终你会在工作代码中看到答案,手指交叉。

自从:

什么是完全释放我的解码对象的有保证的方法?

4

2 回答 2

1

您正在管理从NSKeyedArchiver.

您要么需要显式保留它,并在完成后调用 release,要么立即使用它——例如写入文件。

我建议重新熟悉一下Objective-C 的内存管理规则

手动内存管理一开始有点棘手,但是一旦你掌握了规则,它就会让这种情况很容易解决。

现在,如果您需要确保立即删除内存,则需要编写自己的二进制序列化程序,该序列化程序将遵循 alloc:init 模式,以便调用者明确拥有内存。这样,当您在对象上调用 release 时,它​​将被释放。

于 2013-01-15T01:08:29.050 回答
0

NSCoder 不属于该发布池。

于 2013-01-15T01:06:21.380 回答