代码之家  ›  专栏  ›  技术社区  ›  Ken

NSCoding和整数数组

  •  0
  • Ken  · 技术社区  · 14 年前

    int ? 单独编码每个整数(在for循环中)。但是如果我的数组有一百万个整数呢?有没有比使用for循环更令人满意的替代方法?

    1 回复  |  直到 14 年前
        1
  •  2
  •   justin    14 年前

    如果您关心的是性能:CFData/NSData与NSCoding兼容,那么只需将数组的序列化表示形式包装为NSCFData即可。

    你的int数组需要转换成一个通用的endian格式(取决于机器的endian),例如,总是以小endian或大endian的形式存储。在编码过程中,将其转换为指定endianness中的整数数组,并将其传递给NSData对象。然后将NSData表示形式传递给NSCoder实例。在解码时,您将收到密钥的NSData对象,在解码时有条件地将其转换为机器的本机endianness。一组可用于OSX和iOS的字节交换例程从 OSSwap* .

    -[NSCoder encodeBytes:voidPtr length:numBytes forKey:key] . 这个例程还要求客户机交换endianness。