Когда вызывается initWithCoder? - PullRequest
6 голосов
/ 18 сентября 2010

Это загрузит массив

- (id)initWithCoder:(NSCoder*) coder
{
    self = [super initWithCoder: coder];
    if (self) {
        myArray=[coder decodeObjectForKey:@"myArray"];
    }
    return self;
}

Какой код вызовет эту функцию для загрузки массива?

Ответы [ 2 ]

4 голосов
/ 18 сентября 2010

Методы initWithCoder: используются для десериализации с использованием протокола NSCoding , например. через [NSKeyedUnarchiver unarchiveObjectWithFile:] . Подробнее см. Руководство по программированию архивов и сериализаций , особенно раздел Кодирование и декодирование .

1 голос
/ 18 сентября 2010

Как сказал DarkDust, он вызывается, когда используется NSUnarchiver или NSKeyedUnarchiver. Однако это не обязательно собственный случай. Фактически можно реализовать пользовательский NSCoder и, соответственно, NSDecoder. Например, кодировать / декодировать yaml и т. д. *

Самым распространенным случаем использования является загрузка файлов пера, поскольку их содержимое архивируется.

...