Isa*_*erg 4 struct compilation filesize swift
在GitHub上有一个颇受欢迎的仓库,名为Bohdan Orlov的iOS技能矩阵。
在“内存”行的“中间”列中,它指出
结构增加二进制大小
自半年多以来,我一直在第一次看到这个声明,自从我一直想知道它是否正确,如果是的话,为什么会这样呢?它与结构在函数调用中被复制的事实有关系吗?
从这里开始(不是关于Swift的,但可能是答案)
在C语言中,未初始化为零或未初始化的静态结构(即静态地为零以外的值)会增加二进制大小(它们进入数据段,即,即使您仅初始化结构的一个字段,二进制也是如此)包含完整结构的完整图片)
从这里开始(不仅关于结构,而且可能也很有趣)
结构可能会增加二进制文件的大小。如果将结构放入列表中,则会在堆栈上创建它们,并且它们会增加二进制文件的大小。
可选用法也会增加二进制文件的大小。您将使用可选的,但是您不知道的是编译器必须做很多事情;它必须进行检查,必须进行展开。因此,即使它只是带有问号的单行代码,您在二进制文件中也获得了很大的空间。
通用专业化是我们遇到的另一个问题。无论何时使用泛型,如果希望泛型都快,编译器都会对其进行专门化处理,并且还会使您的二进制文件数量增加很多。
对于我的事业,第一句话很有意义,因此我想Swift也发生了同样的事情。在某些情况下,您将结构对象作为对象存储在二进制文件中是有原因的。
希望能帮助到你。