2010-11-26 2 views
6

iOS docs различает «сериализацию» и «архивирование». Является ли это общим отличием (т. Е. Выполняется на других языках) или оно специфично для Objective-C? Кроме того, в чем разница между этими двумя?Сериализация против архивации?

+0

@ skaffman, я точно не хотел, чтобы это помеченное iOS, чтобы я мог получить ответы от других языков. –

+0

GG skaffman. GG. – Mark

+1

Он даже не специфичен для iOS. NSKeyedArchiver доступен также в Mac OS X. –

ответ

5

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

Википедии есть это, чтобы сказать о сериализации:

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

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

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

+0

Отличный ответ +1. Я на самом деле все это сделал назад. –

1

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

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

С C++ увеличить сериализации -

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

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

+0

Прохладный +1. Это помогает мне отделиться. Я держусь за дополнительные примеры на других языках. –

6

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

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

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

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

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

различия реализации:
Любой объект, который реализует протокол NSCoding можно архивировать, где, как только экземпляры NSArray, NSDictionary, NSString, NSDate, NSNumber и NSData (и некоторые из их подклассов) могут быть упорядочены. Содержимое объектов массива и словаря также должно содержать только объекты этих нескольких классов.

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

 Смежные вопросы

  • Нет связанных вопросов^_^