2010-03-31 3 views

ответ

1

Два варианта приходят на ум:

  1. превратить его в NSArray из NSNumber объектов.
  2. Shoehorn в NSValue или NSData объект.
0

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

- (void)encodeBytes:(const uint8_t*)bytesp length:(NSUInteger)lenv forKey:(NSString*)key; 

хранить байты непосредственно, а затем

- (const uint8_t*)decodeBytesForKey:(NSString*)key returnedLength:(NSUInteger*)lengthp; 

, чтобы декодировать их. Как указывает файл заголовка NSCoder, метод decodeBytesForKey: возвратилLength: возвращает неизменяемые байты, поэтому вы захотите скопировать возвращенный массив в свой двойной массив. Поскольку возвращаемый массив является const, я предполагаю, что декодер владеет этим массивом и освободит его, когда декодер будет отменен.

Это не так удобно, как просто поместить массив в объект NSData и архивировать его, но это позволяет избежать накладных расходов на создание временного объекта.