Re: allocWithZone not working with Class Clusters?
Re: allocWithZone not working with Class Clusters?
- Subject: Re: allocWithZone not working with Class Clusters?
- From: Nat! <email@hidden>
- Date: Fri, 22 Nov 2002 23:16:42 +0100
Am Donnerstag, 21.11.02 um 20:54 Uhr schrieb Timothy Ritchey:
I've been investigating the whole allocWithZone: issue now that
NSCreateZone is working on Jag, and have run across an interesting
issue. It seems as if the allocWithZone: method works for basic
classes, but not with class clusters, such as NSArray, NSString, etc.
I haven't fully explored this yet, but just tried it with a few
classes. Things like:
NSZone *z = NSCreateZone( ... );
NSString *s = [[NSString allocWithZone:z] initWithString:...];
if(NSZoneFromPointer(s) == z)
NSLog(@"good");
else if(NSZoneFromPointer(s) == NSDefaultMallocZone)
NSLog(@"bad");
Always return "bad" for NSArrays or NSStrings (mutable or not), but
work for things like NSData and NSHost. Is this by design, or are the
class cluster implementations not obeying the zone designation, or is
it not a class cluster issue at all?
The problem is that [NSString allocWithZone: doesn't really allocate an
object but returns a placeholder object. The real string object is
allocated with init. (*1*)
AFAI can remember that used to be (Mac OS X Server 1.2) properly zoned,
i.e. you got a different placeholder object for each zone. If that
isn't the case anymore write a bug about it. Fixing it will of course
waste performance...
In any case I think zoning is way overrated (*2*). Might be interesting
for debugging but don't expect much in the way of performance. I would
not waste too much effort on keeping things properly zoned.
Just my opinion though.
Ciao
Nat!
(*1*) If there was just newWithString: instead of alloc/init these
problems would not be and placeholder objects wouldn't exist.
(*2*) To put some obscurity here, if API users where required to use
the return value of retain only and not the pre-retained object, I
could see some good use :)
Jedenfalls sind zehn Fehlstarts hintereinander [E. Fuchs]
ein sehr interessanter Beweis
fuer unsere Theorie
von der natuerlichen Ueberlegenheit des Dezimalsystems
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.