Re: Is @"constantstring" pointer equal to @"constantstring" a guarantee?
Re: Is @"constantstring" pointer equal to @"constantstring" a guarantee?
- Subject: Re: Is @"constantstring" pointer equal to @"constantstring" a guarantee?
- From: "Kyle Sluder" <email@hidden>
- Date: Thu, 27 Mar 2008 22:58:34 -0400
On Thu, Mar 27, 2008 at 10:52 PM, glenn andreas <email@hidden> wrote:
> Bad Idea.
>
> Consider that, at some point, you move your code into a framework that
> you can reuse in multiple projects. While the linker can coalesce
> constant strings within a single binary, it obviously doesn't go
> across multiple binaries, so suddenly code that worked fine no longer
> works (and you spend days tracking it down).
That's actually the situation my question arose from.
> You could do what Coca does and declare your keys as variables:
>
> extern NSString *NSFontAttributeName;
>
> In this case, if you always used NSFontAttributeName (and never
> @"NSFontAttributeName") you should be OK, because all places are
> basically referring to the same variable value. This, of course,
> assumes that the variable is _always_ used.
This is what I do. In my header, my string constants are declared
extern, and defined in a source file. I figured only one instance of
this symbol will exist anyway and will be resolved by dyld at runtime.
Though I guess I shouldn't assume that dyld will actually resolve
_MyStringKey to the same place in all cases (though why would it ever
do otherwise?).
> Of course, I'd be paranoid and just use isEqualToString: since that
> has the fewest assumptions and is the safest (and the infinitesimal
> performance penalty is completely overwhelmed by the time not spent
> tracking down bugs by using "==").
Makes sense.
--Kyle Sluder
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden