Objective c 如何将NSArray写入NSOutputStream?

Objective c 如何将NSArray写入NSOutputStream?,objective-c,cocoa,arrays,byte,Objective C,Cocoa,Arrays,Byte,我想发送一个NSArray,所以我必须先将它写入NSOutputStream。 方法应为: - (NSInteger)write:(const uint8_t *)buffer maxLength:(NSUInteger)length 我可以使用以下方法将数组指针转换为uint8 ut: (uint8_t *)arr 但是如何获得数组的字节长度呢?我是否必须将阵列保存到文件并将其作为NSData读取 我可以使用以下方法将数组指针转换为uint8 ut: (uint8_t *)arr (uint8

我想发送一个NSArray,所以我必须先将它写入NSOutputStream。 方法应为:

- (NSInteger)write:(const uint8_t *)buffer maxLength:(NSUInteger)length
我可以使用以下方法将数组指针转换为uint8 ut:

(uint8_t *)arr
但是如何获得数组的字节长度呢?我是否必须将阵列保存到文件并将其作为NSData读取

我可以使用以下方法将数组指针转换为uint8 ut:

(uint8_t *)arr
(uint8_t *)arr
那只是演员阵容;它实际上并没有将数组转换为字节序列。即使通过线路发送阵列的专用存储,阵列的内容也只是其他对象的内存地址。进程中的内存地址在接收进程中几乎肯定是不同的,这是假设接收进程正在运行Cocoa,并且预期会出现NSArray

您需要将数组的内容序列化为接收器能够处理的某种外部表示形式。您可以通过手动创建and或组装自定义格式表示,但不能单独使用强制转换

但是如何获得数组的字节长度呢

数组不是一系列字节;它是一个物体。因此,它没有长度,只有(作为数组)其中对象的计数。在获取序列长度之前,需要一系列字节

我是否必须将阵列保存到文件并将其作为NSData读取

您需要获取数组的外部表示,最好是在NSData对象中。告诉它将自己写入(一个plist)一个文件,然后将文件读回是一种方法,但是有更好的方法,我在上面列出了