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 数组的指针供其他语言的方法使用了。

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 307、setValue:forKey和setObject:forKey的区别是什么? 答:1, setObjec...
    AlanGe阅读 1,768评论 0赞 1
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,744评论 30赞 472
  • 借来的火,点不亮自己的心灵! 2016持之以恒地贯彻卓有成效管理者的行为习惯。 一,知道如何利用自己的时间。 二,...
    熊妈724阅读 147评论 0赞 0
  • 看《非暴力沟通》的第二天,其实重点就围绕着这四点在讨论: 观察: 如何不带任何个人意见与评论的观察?人总是看到自己...
    我是吴小丽阅读 427评论 0赞 0
  • 作者:史遇春 五 最后,由查维桢出面,向他的一位军官好友告贷,借来了朱提银四百两。这四百两朱提银,是查维桢的军官朋...
    尘境心影录阅读 828评论 1赞 5

友情链接更多精彩内容