如何编写是为NSOutputStream?
-
23-08-2019 - |
题
我要发出一个是,所以我要把它写到NSOutputStream第一次。该方法应该是:
- (NSInteger)write:(const uint8_t *)buffer maxLength:(NSUInteger)length
我可以转换的阵列的指uint8_t使用:
(uint8_t *)arr
但是如何获得长字节的阵?我必须拯救阵列文件并阅读它,因为NSData?
解决方案
我可以转换的阵列的指uint8_t使用:
(uint8_t *)arr
这只是一个铸;它实际上并没有转换的阵列的顺序字节。甚至如果你发送的私人储存的阵列的在线内容的阵列是仅存的地址其他物体。存储器中的地址你的过程,几乎可以肯定不相同的接收进程—这是假定的接收处理的是运行可可和会期待一个是!
你需要序列化的阵列的内容要一些外部表示,该接收机会能够处理。你可以做到这一点的 转换到一个plist, 创造一个 NSXMLDocument 和 获取其数据, 或组装定的格式表示的手但是不与现独自一人。
但是如何获得长字节的阵?
阵列不是一系列的字节;这是一个对象。因此,它没有长度,只有(作为一系列)的数目。你需要一个系列节之前可以获得一系列的长度。
我必须拯救阵列文件并阅读它,因为NSData?
你需要得到外部代表的列,最好在一个NSData对象。告诉它来编写(a plist的)身为一个文件并阅读该文件后在一个办法,但有很多更好的方式,这是我上面列出的。
不隶属于 StackOverflow