objective C – Как использовать метод initWithCoder?

У меня есть следующий метод для моего classа, который намеревается загрузить файл nib и создать экземпляр объекта:

- (id)initWithCoder:(NSCoder*)aDecoder { if(self = [super initWithCoder:aDecoder]) { // Do something } return self; } 

Как создать экземпляр объекта этого classа? Что это за NSCoder ? Как я могу его создать?

  MyClass *class = [[MyClass alloc] initWithCoder:aCoder]; 

Вам также необходимо определить следующий метод следующим образом:

 - (void)encodeWithCoder:(NSCoder *)enCoder { [super encodeWithCoder:enCoder]; [enCoder encodeObject:instanceVariable forKey:INSTANCEVARIABLE_KEY]; // Similarly for the other instance variables. .... } 

И в initWithCoder метод инициализируется следующим образом:

 - (id)initWithCoder:(NSCoder *)aDecoder { if(self = [super initWithCoder:aDecoder]) { self.instanceVariable = [aDecoder decodeObjectForKey:INSTANCEVARIABLE_KEY]; // similarly for other instance variables .... } return self; } 

Вы можете инициализировать стандартный объект, т.е.

 CustomObject *customObject = [[CustomObject alloc] init]; 

Класс NSCoder используется для архивирования / разблокировки (маршал / немаршаль, сериализация / десериализация) объектов.

Это метод записи объектов в streamах (например, файлы, сокеты) и возможность их получения позже или в другом месте.

Я бы предложил вам прочитать http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/Archiving/Archiving.html

  • С ARC, что лучше: alloc или autorelease инициализаторы?
  • Установка UIDatePicker в таблицу UIActionSheet
  • Можем ли мы пригласить людей использовать наше приложение или отправить запрос друга из приложения через Facebook в iOS 5?
  • Добавление неизвестного количества строк в «Статические ячейки» UITableView
  • Создать случайное число в пределах диапазона?
  • используя objc_msgSend для вызова функции Objective C с именованными аргументами
  • Лучший способ заставить NSRunLoop ждать установки флага?
  • Лучший способ удалить из NSMutableArray во время итерации?
  • Точка с запятой после имени метода в файле реализации Objective-C
  • Редактирование Info.plist возможно программно?
  • Как работает новый механизм автоматического подсчета ссылок?
  • Interesting Posts

    Время Джоды: первый день недели?

    Локальный кеш для NAS или сетевой папки

    Как удалить диакритические символы из строки в Swift?

    Подключите внешний USB-накопитель в однопользовательском режиме

    Можно скрыть Mac-раздел Когда в Windows?

    Преобразование разделенной запятой строки в массив в PL / SQL

    Перемещение ПК с одного жесткого диска на другой?

    Обратная косая черта и цитата в аргументах командной строки

    Моя клавиатура Windows «умна» с ключами цитат – как я могу ее остановить?

    Неужели SSD действительно последние 285 лет?

    Граница с закругленными углами и прозрачностью

    Отрицательное сопоставление с использованием grep (строки соответствия, которые не содержат foo)

    Сделать grub сохранить загрузку по умолчанию под обновлениями ядра

    Как создать живой компакт-диск с вашими собственными приложениями?

    Могу ли я ssh где-нибудь, запустить некоторые команды, а затем оставить себе подсказку?

    Давайте будем гением компьютера.