Вопрос

Документы IOS различают «сериализацию» и «архивирование». Это общее различие (т. Е. Удерживает на других языках) или это специфично для объективного C? Кроме того, в чем разница между этими двумя?

Это было полезно?

Решение

Это случай, когда из них есть другой (но не все) того времени.

У Википедии это говорит о сериализации:

«Сериализация - это процесс преобразования структуры данных или объекта в последовательность битов, чтобы ее можно было хранить в буфере файла или памяти, либо передаваться по ссылке на сетевую связь, чтобы быть« воскрешенным »позже в той же или другой компьютерной среде "

Итак, архивирование мая Только быть сериализацией, но, например, также может быть комбинация сериализации и компрессионного сжимания. Или, возможно, он добавляет некоторую информацию заголовка. Таким образом, сериализация является формой архива, но архив не обязательно является сериализацией.

Это на самом деле не специфично для iOS - эти условия брошены по всему. Их специфическое значение в контексте iOS может быть вполне конкретным, хотя.

Другие советы

Я на самом деле пытался искать их отличие от перспективы IOS. Добавление следующих для людей интересно:

Цель:
Архивирование используется для хранения объектных графов. Полная модель данных может быть заархивирована и легко восстановлена. Путь файлов Nib работать, можно рассматривать как пример для архивирования.

Сериализация используется для хранения произвольной иерархии объектов.
Работы Wat Plist Plist можно рассматривать как пример для сериализации.

Различия (выдержки из архивов Руководство по программированию):
«Архив сохраняет личность каждого объекта на графике и все отношения со всеми другими объектами на графике».
Отслеживается каждый объект, закодированный в контексте вызова RootObject. Если кодер просят кодировать объект более одного раза, кодер кодирует ссылку на первую кодировку вместо того, чтобы снова кодировать объект.

«Сериализация сохраняет только значения объектов и их положение в иерархии. Несколько ссылок на тот же объект значения могут привести к нескольким объектам при десериализации. Муравьеспособность объектов не поддерживается».

Различия в реализации:
Любой объект, который реализует Nscoding Protocol, может быть заархивирован, где как только случаи NSARRAY, NSDICTARY, NSSTRING, NSDATE, NSNUMBES и NSDATA (и некоторых их подклассов) могут быть сериализованы. Содержимое массива и объектов словаря также должно содержать только объекты этих нескольких классов.

Когда использовать:
Свойства списков (сериализация) должны использоваться для данных, которые состоят в основном из строк и цифр. Они очень неэффективны при использовании с большими блоками двоичных данных.
Достойно архивировать объекты, отличные от объектов Plist или хранения больших блоков данных.

Вообще говоря, сериализация связана с преобразованием ваших типов данных программы в архитектуру независимые байтовые потоки. Архивация является специализированной сериализацией, в том, что вы можете хранить тип и другие отношения на основе отношений, которые позволяют легко нерешительно / нерешительно. Таким образом, архив можно рассматривать как специализацию и подмножество сериализации. Для объекта-C

Сериализация преобразует типы объективных C и из независимого в архитектуре байтовый поток. В отличие от архивирования, базовая сериализация не записывает тип данных значений, ни взаимосвязей между ними; Только ценности сами записаны. Вы несете ответственность за десериализовать данные в правильном порядке. Однако несколько классов удобства обеспечивают возможность сериализации списков свойств, записывать их структуру вместе со своими значениями.

С C ++ Boost сериализация -

http://www.boost.org/doc/libs/1_45_0/libs/serialization/doc/index.html.

Здесь мы используем термин «сериализация», чтобы означать обратимый деконструкцию произвольного набора структур данных C ++ к последовательности байтов. Такая система может быть использована для восстановления эквивалентной структуры в другом контексте программного обеспечения. В зависимости от контекста это может использоваться настойчивость объекта, прохождение удаленного параметра или другого объекта. В этой системе мы используем термин «архив» для обозначения конкретного рендеринга этого потока байтов. Это может быть файл двоичных данных, текстовых данных, XML или некоторых других, созданных пользователем этой библиотеки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top