我从NSCoder编码中带回了一个根对象,并且不知道如何对这个返回的对象进行内存管理。我用自动释放池包围它,但对象不会与池一起出去。 Code Here, See line 289 线路和代码可能会随着Git Hub提交而改变,但最终你会看到工作代码中的答案,手指交叉。
自:
retainCount方法为unpredictable,
自动释放池在解码后不会删除未取消的对象, this article states decoded object are autoreleased and must be retained.
完全导致解码对象重新分配的保证方法是什么?
答案 0 :(得分:1)
您正在管理从NSKeyedArchiver.
您需要明确保留它,并在完成后调用release,或立即使用它 - 例如写入文件。
我建议您重新熟悉Memory Management Rules for Objective-C
手动内存管理起初有点棘手,但是一旦掌握了规则,就会使这样的情况变得非常容易。
现在,如果您需要确保立即删除内存,则需要编写自己的二进制序列化程序,该序列化程序将遵循alloc:init模式,以便调用程序显式拥有内存。这样,当您在对象上调用release时,它将被释放。
答案 1 :(得分:0)
NSCoder不属于该发布池。