On 27 Mar '08, at 4:20 PM, Nathan Vander Wilt wrote:

So does that mean once I'm up at the Cocoa level, that
constant strings *are* guaranteed to have the same
pointer if their contents are the same? What is
"unique" and what is a "module" in this context?

The linker coalesces multiple identical string constants into a single value in the data segment. However, you can still end up with multiple copies if your code was linked in separate pieces and then joined together. Prior to Xcode 3.0 that used to happen when using ZeroLink — in fact, once or twice I've had my code crash when run with ZeroLink because I'd inadvertently used pointer comparison instead of isEqualToString: somewhere. Xcode 3.0 doesn't have ZeroLink anymore, but the details of how your program gets linked together are not something you should be relying on.

If you want to use this sort of optimization, it's very easy to write a MakeStringUnique( ) function that returns a single unique copy of the given NSString; any strings that have been run through that function can be compared with ==. All you have to do to implement it is keep a global NSMutableSet of NSStrings.

—Jens

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to