On Dec 15, 2008, at 5:33 PM, Andrew Farmer wrote:

On 15 Dec 08, at 14:54, John Michael Zorko wrote:
Imagine this:

static NSMutableDictionary *lookup = [NSMutableDictionary new];

... now imagine a situation where I need to clear that dictionary. If I call

[lookup release];
lookup = [NSMutableDictionary new];

... it will obviously be faster than coding a for loop and removing each object in the dictionary, but since it was declared as static, which is safer?

Neither. All that "static" means on a global variable is that the symbol isn't visible from other source files. It has no bearing whatsoever on the contents of that variable.

Although all global variables have static storage, quite aside from the "static" keyword.

Perhaps John is confused about what is static in this case, though. The storage for lookup, which is a pointer, is static. The mutable dictionary object it points to, though, is not. It's allocated from the heap.

I'm guessing that John is coming from C++ where you can truly have statically allocated objects. If you do that, then it's wrong to use the delete operator on such an object. But that's not analogous to this case.

Regards,
Ken

_______________________________________________

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

Reply via email to