【问题标题】:Will using struct over class, will have impact on the allowable data size?使用 struct over class 会影响允许的数据大小吗?
【发布时间】:2019-11-17 02:42:55
【问题描述】:

目前,我正在设计一个笔记应用程序。

它的整体用法应该是

class Note {
    var title: String?
    var body: String?
}

var notes = [Note]() 
notes.append(Note())

我很想将 Note 设计为结构体

struct Note {
    var title: String?
    var body: String?
}

var notes = [Note]() 
notes.append(Note())

但是,我也担心这可能会限制

  1. 每个 Note 实例的最大允许大小。因为,这并不常见,因为 Note 的字符串体有 >10MB
  2. Array of Note 结构的最大允许数组大小

据我所知,struct 的实例是在堆栈内存中创建的,而类的实例是在堆内存中创建的。堆栈内存大小远小于堆内存大小 - Is the stack size of iPhone fixed?

在类上使用结构,会影响允许的数据大小吗?

【问题讨论】:

  • 正如an answer 中对您上一个问题所指出的那样,String 和 Array 是 固定大小的结构,带有指向包含实际字符或数组元素的堆分配内存的指针。所以struct Note的大小是固定的,与字符串中存储的字符数无关。

标签: ios swift


【解决方案1】:

一句话,没有。

结构与类或结构或类的数组的最大大小没有区别。

此外,正如 Martin 在他的评论中所说,您的结构/类实际上包含指向字符串的 指针,而不是字符串本身。因此,结构和类都不会随着不同大小的字符串改变大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 2014-12-16
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多