【发布时间】:2017-11-16 21:53:39
【问题描述】:
我阅读了很多文章和文档,但仍然无法完全理解不同数据类型在内存中的存储位置。
你能解释一下内存可变字符串或任何其他可变类型,例如var string: String 已存储。
而 不可变字符串 或任何其他不可变类型,例如let string: String 被存储了吗?
你能回答一下 Swift 和 Objective-C 的问题吗?
【问题讨论】:
-
为什么重要?在 Obj-C 中,如果我们谈论的是文字,它们可以存储在静态内存(既不是堆栈也不是堆)中。斯威夫特将是相似的。大多数时候将使用堆。堆栈可能是可能的,但仅作为对不可变字符串的优化。在 Swift 中,实际的 String 实例可以放在堆栈上,但它仍然会引用堆。你不知道你想要多复杂的答案。
-
你可能想先做一点谷歌搜索:stackoverflow.com/questions/27441456/…
-
Dominik,我已经阅读了那个答案,但这是非常常见的答案,例如值类型存储在堆栈中,引用类型存储在堆中(但据我了解,这并不完全正确)。
-
Sulthan,我想要最复杂的答案,我想深入了解它。由于 CTO 的第二个面试阶段,我需要理解这个概念(甚至不是针对初级,而是针对实习生职位)。
标签: swift heap-memory stack-memory