为什么 MacOS 应用程序存储大量字符串?
Why do MacOS apps store a lot of strings?
为什么在 MacOS 中,我的应用程序在可执行文件中有很多字符串。就像一堆二进制非人类可读的废话,然后我看到一堆函数和变量名,类型名,像NSString
和其他NS
+什么字符串,很多OBJC
+IIRC,但为什么呢?为什么要存储所有这些?除了膨胀可执行文件大小之外?
我无法具体针对 MacOS 二进制文件回答这个问题,但通常有 2 个原因导致二进制文件具有函数名称之类的东西:
- 它允许某人调试程序。如果没有这些符号,每个变量、函数、堆栈跟踪都会包含没有那么有用的信息。
- 在某些情况下,它允许其他进程调用另一个二进制文件中的函数。如果函数名称未编码,则其他程序无法通过其名称调用该函数(因为它没有名称)。
通常可以创建去除调试符号的二进制文件,这会减小二进制文件的大小。
为什么在 MacOS 中,我的应用程序在可执行文件中有很多字符串。就像一堆二进制非人类可读的废话,然后我看到一堆函数和变量名,类型名,像NSString
和其他NS
+什么字符串,很多OBJC
+IIRC,但为什么呢?为什么要存储所有这些?除了膨胀可执行文件大小之外?
我无法具体针对 MacOS 二进制文件回答这个问题,但通常有 2 个原因导致二进制文件具有函数名称之类的东西:
- 它允许某人调试程序。如果没有这些符号,每个变量、函数、堆栈跟踪都会包含没有那么有用的信息。
- 在某些情况下,它允许其他进程调用另一个二进制文件中的函数。如果函数名称未编码,则其他程序无法通过其名称调用该函数(因为它没有名称)。
通常可以创建去除调试符号的二进制文件,这会减小二进制文件的大小。