Я делаю некоторое архивирование в список свойств, и когда я удаляю свои данные с помощью NSKeyedUnarchiver, я обнаружил, что мое приложение сработает, если я отпустил объект позже. Мне было интересно, если сообщение finishDecoding также автореализует объект. Кажется странным, что он падает, когда я его отпускаю.Является ли NSKeyedUnarchiver авторефератом?
ответ
Что вы выпускаете? NSKeyedUnarchiver или unarchived object?
Если вы освобождаете NSKeyedUnarchiver или не зависит от того, как вы его создали. Это следует обычным правилам. Если вы используете alloc
+ initForReadingWithData
, вам следует освободить, если вы используете unarchiveObjectWithData
или unarchiveObjectWithFile
- вам не следует.
Что касается результата decodeObjectForKey
, то также следует обычное правило, что метод возвращает объект с автореализацией, и вы не должны отпускать его, если вы его явно не сохранили.
Относительно finishDecoding
: вы должны явно вызвать его до выхода объекта NSKeyedUnarchiver. Вы не должны использовать unarchiver после этой точки, но объект все еще жив.
Если инициализировать Unarchiver с
[[NSKeyedUnarchiver alloc] initForReadingWithData:data]
Тогда вы ответственны за освобождение, когда йо сделаны разархивировав.
Если это сбой после его выпуска, значит, ваша ошибка в другом месте. Возможно, потому, что вы используете объекты, которые предоставляет ваш unarchiver, не сохраняя их. И когда unarchiver освобождается, он освобождает объекты, которые вам предоставлены. Если вы не сохранили их, они будут освобождены, и вы столкнетесь, когда будете ссылаться на эти объекты.
- 1. MonoTouch NSKeyedUnarchiver
- 2. NSKeyedUnArchiver Crash
- 3. [NSKeyedUnarchiver initForReadingWithData:]: данные NULL
- 4. NSKeyedUnarchiver unarchiveObjectWithData Convertion вопрос
- 5. NSKeyedUnarchiver unarchiveObjectWithData return nil
- 6. NSKeyedUnarchiver не вызывает initWithCoder
- 7. NSKeyedUnarchiver - удалить декодированные данные?
- 8. Ловля исключения NSKeyedUnarchiver
- 9. NSKeyedUnarchiver unarchiveObjectWithFile причиной аварии
- 10. NSKeyedUnarchiver - Плохой доступ
- 11. NSKeyedArchiver & NSKeyedUnarchiver/Swift 3.0
- 12. регресс в NSKeyedUnarchiver
- 13. Objective-C NSKeyedUnarchiver разгрузка
- 14. Объекты NSKeyedUnarchiver нарушаются?
- 15. NSKeyedUnarchiver вызывает утечку памяти
- 16. IPhone - Ошибка памяти NSKeyedUnarchiver
- 17. NSKeyedUnarchiver вопрос с unarchiving
- 18. NSKeyedUnarchiver unarchiveObjectWithData: не работает
- 19. Ошибка при использовании NSKeyedUnarchiver
- 20. NSKeyedUnarchiver: iPhone .v. Тренажер
- 21. Должен ли я освободить после завершения декодирования с помощью NSKeyedUnarchiver?
- 22. WatchKit NSUserDefaults и NSKeyedUnarchiver вопрос
- 23. NSKeyedUnarchiver падает после декодирования массива
- 24. NSKeyedArchiver и NSKeyedUnarchiver с NSMutableArray
- 25. Альтернатива для NSKeyedArchiver/NSKeyedUnarchiver iOS
- 26. NSKeyedUnarchiver decodeObjectForKey, возвращающий нулевой класс
- 27. Убедитесь, что NSKeyedUnarchiver возвращает nil
- 28. Проблема с утечкой памяти NSKeyedUnarchiver
- 29. Swift - NSKeyedUnarchiver unarchiveObjectWithData в NSMutableArray
- 30. NSKeyedUnarchiver + UITableViewController не работает правильно
Если имя метода не имеет в нем копии, и вы не сообщаете об этом объекте с помощью alloc, new или сохраняете, то вы не должны его отпускать. Таким образом, объекты, которые вы производите с помощью удобных методов в NSKeyedUnarchiver, должны быть сохранены или скопированы, если вы хотите их владеть, и вы не должны выпускать их/если вы не сохранили или не скопировали их. –