Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека Разработчика iOS

Разработчик

Ссылка платформы основы ссылка на протокол NSSecureCoding

Опции
Развертывание Target:

На этой странице
Язык:

NSSecureCoding

Наследование


Не применимый

Соответствует


Оператор импорта


Swift

import Foundation

Objective C

@import Foundation;

Доступность


Доступный в iOS 6.0 и позже.

Приспосабливание протоколу NSSecureCoding указывает, что объект обрабатывает кодирование и декодирование экземпляров себя способом, который устойчив против объектных атак замены.

Исторически, много классов декодировали экземпляры себя как это:

Swift

  • if let object = decoder.decodeObjectForKey("myKey") as MyClass {
  • ...succeeds...
  • } else {
  • ...fail...
  • }

Objective C

  • id obj = [decoder decodeObjectForKey:@"myKey"];
  • if (![obj isKindOfClass:[MyClass class]]) {...fail...}

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

Для приспосабливания NSSecureCoding:

  • Не переопределяющий объект initWithCoder: может соответствовать NSSecureCoding без любых изменений (предполагающий, что это - подкласс другого класса, соответствующего).

  • Действительно переопределяющий объект initWithCoder: должен декодировать любые вложенные объекты с помощью decodeObjectOfClass:forKey: метод. Например:

    Swift

    • let obj = decoder.decodeObjectOfClass(MyClass.self, forKey: "myKey")

    Objective C

    • id obj = [decoder decodeObjectOfClass:[MyClass class]
    • forKey:@"myKey"];

    Кроме того, класс должен переопределить supportsSecureCoding метод для возврата YEStrue.

Для получения дополнительной информации о том, как это касается API NSXPC, посмотрите Creating XPC Services в Руководстве по программированию Демонов и Служб.

  • Возвраты, поддерживает ли класс безопасное кодирование. (требуемый)

    Объявление

    Swift

    static func supportsSecureCoding() -> Bool

    Objective C

    + (BOOL)supportsSecureCoding

    Возвращаемое значение

    Возвратиться YEStrue если Ваш класс поддерживает безопасное кодирование, или NOfalse иначе.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в iOS 6.0 и позже.