Skip navigation.
 
mlRe: allocWithZone not working with Class Clusters?
FROM : Nat!
DATE : Fri Nov 22 23:16:42 2002

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_removed>
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.

Related mailsAuthorDate
mlallocWithZone not working with Class Clusters? Timothy Ritchey Nov 21, 20:54
mlRe: allocWithZone not working with Class Clusters? Nat! Nov 22, 23:16
mlRe: allocWithZone not working with Class Clusters? Timothy Ritchey Nov 23, 02:16