我正在做一些歸檔到屬性列表,當我使用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. Autorelease iPhone
- 4. Autorelease NSString
- 5. Autorelease CFMutableDictionary
- 6. NSURLRequest autorelease?
- 7. NSKeyedArchiver&NSKeyedUnarchiver/Swift 3.0
- 8. EXC_BAD_ACCESS on [NSKeyedUnarchiver unarchiveObjectWithData:];
- 9. NSKeyedUnArchiver崩潰
- 10. 什麼是NSKeyedUnarchiver?
- 11. MonoTouch的NSKeyedUnarchiver
- 12. 迴歸在NSKeyedUnarchiver
- 13. EXC_BAD_ACCESS與NSKeyedUnarchiver
- 14. 錯誤使用NSKeyedUnarchiver
- 15. NSKeyedUnarchiver內存泄漏
- 16. [NSKeyedUnarchiver initForReadingWithData:]:data is NULL
- 17. Swift - NSKeyedUnarchiver unarchiveObjectWithData in NSMutableArray
- 18. NSKeyedUnarchiver與unarchiving問題
- 19. NSKeyedUnarchiver unarchiveObjectWithData返回無
- 20. NSKeyedUnarchiver SIGBUS BUS_ADRALN崩潰
- 21. 錯誤處理-NSKeyedUnarchiver
- 22. NSKeyedUnarchiver不返回「無」
- 23. NSOperation和Autorelease池
- 24. NSURLConnection start + autorelease
- 25. ccscene弧和autorelease
- 26. Objective C autorelease
- 27. autorelease關鍵字
- 28. ARC和autorelease
- 29. CGPDFDocumentRef和autorelease
- 30. autorelease問題
如果方法名稱中沒有拷貝,並且沒有用alloc,new或retain消息對象,那麼你不應該釋放它。因此,如果您想擁有它們並且您不應該釋放它們/除非/您保留或複製它們,則必須保留或複製您在NSKeyedUnarchiver中使用便捷方法取消歸檔的對象。 – 2010-04-16 17:00:30