Objective-C 中使用 byte 数组

在写 iOS 一个缓存工具的时候因为要对二进制数据操作,所以很自然地就想到了要把数据转换为 byte 数组,然后进行对数组的操作。但是在实际操作的时候发现,在 Objective-C 中并没有显式的 byte 数组,也就是 byte[] 。与这个稍微相关一点的数据结构就是 Byte 了,它可以作为指针指向一个 byte 数组,但是由于 Objective-C 没办法直接操作基础数据的数组(Objective-C 中一般都是使用 NSArray,里面装的都是 id 对象,没办法直接装基础数据类型),所以即使得到这样一个指针没办法对它进行自由的操作,最多就是把它传给其 C 或者 C++的方法使用 。

难道在 Objective-C 中就没办法使用 byte 数组了?在查阅的一些文档和资料后发现,确实在 Objective-C 中操作 byte 数组确实不方便,或者说 Objective-C 在设计之初就没想过让使用者去直接操作 byte 数组。Objective-C 是一个高度实现了面向对象编程的语言,所以其实在 Objective-C 中想要对二进制数据操作,只需要使用 NSData 即可,我们可以发现 NSData 中的 API 基本上满足了我们所有对二进制数组操作的要求。甚至可以说 NSData 是 byte 数组的一种面向对象封装。

最后,如果还是要使用 byte 数组,比如使用到了一些 C 或者 C++ 的一些方法需要 byte 数组,我们可以使用下面的 API:

bytes

定义为 @property(readonly) const void *bytes;

这样可以获得 byte 数组的指针供其他语言的方法使用了。

你可能感兴趣的:(Objective-C 中使用 byte 数组)