iOS知识点-14.说说Swift为什么将String,Array,Dictionary设计成值类型?

Swift vs. Objective-C
  1. 说说Swift为什么将String,Array,Dictionary设计成值类型?

要解答这个问题,就要和Objective-C中相同的数据结构设计进行比较。Objective-C中,字符串,数组,字典,皆被设计为引用类型。

  • 值类型相比引用类型,最大的优势在于内存使用的高效。值类型在栈上操作,引用类型在堆上操作。栈上的操作仅仅是单个指针的上下移动,而堆上的操作则牵涉到合并、移位、重新链接等。也就是说Swift这样设计,大幅减少了堆上的内存分配和回收的次数。同时copy-on-write又将值传递和复制的开销降到了最低。
  • String,Array,Dictionary设计成值类型,也是为了线程安全考虑。通过Swift的let设置,使得这些数据达到了真正意义上的“不变”,它也从根本上解决了多线程内存访问和操作的问题。
  • 设计成值类型还可以提升API的灵活度。例如通过实现Collection这样的协议,我们可以遍历String,使得整个开发更加灵活高效。
上一题 目录 下一题
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 3,057评论 2 9
  • 坚持诚心,致良知定会引领吾与同修之友,从小我修成“有大爱情怀、有爱 国之心、有奉献精神、有坚毅品性、能担大责”的大我!
    王文晓阅读 201评论 0 0
  • 从什么时候起 梦想,这个神圣而执着的它 在这个年代变得泛滥了 人们庄严的握起拳头,宣誓的 尽力的把所谓的梦想昭告全...
    夏小时阅读 166评论 0 1
  • 故事的开头都会美好,故事的结尾不会完美,这本书赠予那些不愿说开始,更不愿说再见的朋友。 ...
    孤独与狗阅读 155评论 0 0
  • 夜空,浩瀚无边的寂静,星辰洒满天际。 被重重人影包围着的帝豪酒店,在夜幕下显得格外宏伟。 谁也没有看见,一抹娇小的...
    倾世璃歌阅读 375评论 0 0

友情链接更多精彩内容