【发布时间】:2010-05-22 15:58:11
【问题描述】:
我知道如果你在 Mac OS 的源代码中定义了一堆 @"" NSString 对象。这些 NSString 将存储在 Mach-O 库中的一个段中。
Section
sectname __ustring
segname __TEXT
addr 0x000b3b54
size 0x000001b7
offset 731988
align 2^1 (2)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
如果我用十六进制转储二进制文件,它们会以0x0000作为分隔符一一紧密对齐。
我想知道的是Mac OS X中的加载器在程序运行时如何加载这些NSStrings?它们是通过识别0x0000 分隔符来简单加载,还是这些是二进制文件中其他地方的字符串偏移表,指向单独的 NSString 对象?
谢谢。
(我真正想做的是增加其中一个NSString的长度,所以我必须知道加载器如何识别这些单独的对象)
补充说: 我知道如果你在代码中定义像 @"abc" 这样的 CStrings,它将进入 cstring 段。 如果它是像@““””这样的字符串,并且没有ASCII字符,根据我的挖掘,它将进入ustring部分。
【问题讨论】:
标签: objective-c macos loader mach-o