我正在做一些归档到属性列表,当我使用NSKeyedUnarchiver取消存档数据时,发现我的应用程序崩溃,如果我之后释放对象。我想知道如果finishDecoding消息也autoreleases对象。似乎很奇怪,它在我释放时崩溃。NSKeyedUnarchiver autorelease?
0
A
回答
2
你释放什么? NSKeyedUnarchiver或unarchived对象?
你是否应该释放NSKeyedUnarchiver取决于你是如何创建它的。它遵循通常的规则。如果你使用alloc
+ initForReadingWithData
你应该释放,如果你使用unarchiveObjectWithData
或unarchiveObjectWithFile
- 你不应该。
关于decodeObjectForKey
的结果,它也遵循通常的规则,该方法返回自动释放对象,除非明确保留它,否则不应释放它。
关于finishDecoding
:您需要在NSKeyedUnarchiver对象发布之前显式调用它。在那之后你不应该使用unarchiver,但对象仍然活着。
0
如果初始化
[[NSKeyedUnarchiver alloc] initForReadingWithData:data]
的取档那么你是负责释放它,当溜溜完成解除存档。
如果它在发布后崩溃了,那么它可能是您的错误在别处。可能是因为您正在使用您的unarchiver提供的对象而不保留它们。当解除分配器被释放时,它释放为您提供的对象。如果你没有保留这些对象,它们将被释放,当你引用这些对象时你会崩溃。
相关问题
- 1. unarchiveObjectWithFile保留/ autorelease需要?
- 2. NSKeyedUnarchiver - 访问错误
- 3. NSURLRequest autorelease?
- 4. Autorelease iPhone
- 5. Autorelease NSString
- 6. Autorelease CFMutableDictionary
- 7. 什么是NSKeyedUnarchiver?
- 8. NSKeyedUnArchiver崩溃
- 9. EXC_BAD_ACCESS与NSKeyedUnarchiver
- 10. 回归在NSKeyedUnarchiver
- 11. Objective C autorelease
- 12. autorelease问题
- 13. objective-c autorelease
- 14. 发布或autorelease?
- 15. NSOperation和Autorelease池
- 16. CGPDFDocumentRef和autorelease
- 17. @autorelease和循环
- 18. reversegeocoder autorelease问题
- 19. autorelease关键字
- 20. PyObjc autorelease pool
- 21. NSKeyedUnarchiver内存泄漏
- 22. NSKeyedUnarchiver unarchiveObjectWithData返回无
- 23. 错误使用NSKeyedUnarchiver
- 24. NSKeyedUnarchiver与unarchiving问题
- 25. Swift - NSKeyedUnarchiver unarchiveObjectWithData in NSMutableArray
- 26. NSKeyedUnarchiver不返回“无”
- 27. UITableViewCell,出队和autorelease?
- 28. autorelease与释放dealloc
- 29. ARC等同于autorelease?
- 30. NSKeyedUnarchiver decodeObjectForKey返回null类
如果方法名称中没有拷贝,并且没有用alloc,new或retain消息对象,那么你不应该释放它。因此,如果您想拥有它们并且您不应该释放它们/除非/您保留或复制它们,则必须保留或复制您在NSKeyedUnarchiver中使用便捷方法取消归档的对象。 – 2010-04-16 17:00:30