On Jul 4, 2011, at 5:23 PM, William Squires wrote: > is there ever a situation in which (properly written) client code could call > this and trip over the memory management rules?
No, it’s fine. The rule is that if you got it from +alloc or -copy you have to release or autorelease it; but if you didn’t, you don’t care. So returning a string literal is OK. > I would guess that literal NSStrings are (effectively) retained, since > they're not going anywhere (they're literal constants, after all), but > they're not obtained by "New", "alloc", or "copy", which - according to the > memory management rules, means you should retain them because they were > autoreleased. Which is true? Proper procedure is to retain/copy them if you’re going to assign them into an instance or static variable, but in this case it doesn’t really matter because they’re never going to be dealloced. On the other hand, I think it’s better to be safe, as things like this can change. For example, for a long time NSFont objects weren’t ever dealloced, so some developers got lazy about retaining them and just assigned them directly to globals. Then in 10.5(?) they did start getting dealloced when not used, which caused some apps to crash. —Jens_______________________________________________ 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 arch...@mail-archive.com