Я знал, что если вы определите кучу @ "" NSString объектов в исходном коде в Mac OS. Эти строки NSS будут храниться в сегменте в библиотеке 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 загружает эти строки NSS при запуске программы? Они загружаются просто, распознав разделитель 0x0000
, или это таблица смещения строк в другом месте двоичного файла, указывающая на отдельные объекты NSString?
Спасибо.
(Что я действительно хочу сделать, так это увеличить длину одной строки NSSt, поэтому я должен знать, как загрузчик распознает эти отдельные объекты)
добавлено:
Я знаю, что если вы определите CString как @ "abc" в коде, он перейдет в сегмент cstring.
Если это строка типа @ "" "" с символами ascii, она переходит в раздел ustring согласно моему копанию.