I have known that If you define a bunch of @"" NSString objects in the source code in Mac OS. These NSStrings will be stored in a segment in the Mach-O library.
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
If I hex dump the binary, they are aligned closely one by one with a 0x0000
as separator.
What I want to know is how does the loader in Mac OS X load these NSStrings when the program runs? Are they loaded simpily by recognize the 0x0000
separator or these is a string offset table elsewhere in the binary pointing to separate NSString objects?
Thanks.
(What I really want to do is the increase the length of one of the NSString, so I have to know how the loader recognize these separate objects)
added: I know if you define CStrings like @"abc" in the code it will goes to cstring segment. If it is a string like @"“”" with out of ascii characters it will goes to ustring section according to my digging.