gpt4 book ai didi

objective-c - 如何将 NSArray 写入 NSOutputStream?

转载 作者:行者123 更新时间:2023-12-03 17:08:43 24 4
gpt4 key购买 nike

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

- (NSInteger)write:(const uint8_t *)buffer maxLength:(NSUInteger)length

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

(uint8_t *)arr

但是如何获取数组的字节长度呢?我是否必须将数组保存到文件中并将其作为 NSData 读出?

最佳答案

I can convert the array's pointer to uint8 _ t using :

(uint8_t *)arr

这只是一个类型转换;它实际上并不将数组转换为字节序列。即使您通过线路发送数组的私有(private)存储,数组的内容也只是其他对象的内存地址。你的进程中的内存地址几乎肯定与接收进程中的内存地址不同——这是假设接收进程正在运行 Cocoa 并且需要一个 NSArray!

您需要将数组的内容序列化为接收器能够处理的某种外部表示形式。您可以通过 converting to a plist 来做到这一点,创建 NSXMLDocumentgetting its data ,或者手动组装自定义格式的表示形式,但不能单独使用强制转换。

But how to get the length of bytes of the array?

数组不是一系列字节;它是一个物体。因此,它没有长度,只有(作为数组)其中对象的数量。您需要一系列字节才能获得该系列的长度。

Do I have to save the array to a file and read it out as NSData?

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

关于objective-c - 如何将 NSArray 写入 NSOutputStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/713262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com