• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag
 

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: copy and mutableCopy
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: copy and mutableCopy


  • Subject: Re: copy and mutableCopy
  • From: Britt Durbrow <email@hidden>
  • Date: Sun, 27 Apr 2014 07:24:43 -0700

Oh, and if you are implementing something like this, don’t forget to trap writes to both the copy *and* the original object:

	myMutableClass *a=[myMutableClass makeAnObjectWithSomeBuffer:aBuffer];
	myMutableClass *b=[a mutableCopy];

	[a mutateTheBuffer];

doing [a isEqual:b] should return NO; but if you didn’t trap the write to the original object and cause the COW copies to actually do the copy then it will erroniously return YES (and all sorts of other havoc will likely ensue…)


On Apr 27, 2014, at 4:06 AM, Maxthon Chan <email@hidden> wrote:

> Immutables copied are just retained and returned, and mutableCopied are COW.
>
> Mutables copied generates COW.
>
> That would be the fastest way implementing that.
>
> * COW = copy on write
>
> On Apr 27, 2014, at 17:06, John McCall <email@hidden> wrote:
>
>> On Apr 27, 2014, at 2:00 AM, Dave <email@hidden> wrote:
>>> A long time back, I remember reading something about the way in which copy and mutableCopy are implemented. I think basically it said that:
>>>
>>> someObject = [someOtherObject copy];
>>>
>>> or
>>>
>>> someObject = [someOtherObject mutableCopy];
>>>
>>> Wouldn’t necessarily allocate any extra data storage. I’ve been searching for it to refresh my memory, but I can’t see to find it anywhere. Does anyone know if this document or something like it exists somewhere?
>>
>> I don’t know if there’s a document, and like a lot of things with ObjC the actual guarantees are pretty weak, but implementations of these methods on immutable types have been turning into essentially “return [self retain];" for quite some time.  But that’s when the actual dynamic type is guaranteed-immutable, e.g. something constructed as an NSArray, not just something that’s immutable by convention, e.g. an NSMutableArray that you’re passing around as an NSArray.
>>
>> John.
>> _______________________________________________
>>
>> 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
>
> _______________________________________________
>
> 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


_______________________________________________

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


  • Follow-Ups:
    • Re: copy and mutableCopy
      • From: Roland King <email@hidden>
References: 
 >copy and mutableCopy (From: Dave <email@hidden>)
 >Re: copy and mutableCopy (From: John McCall <email@hidden>)

  • Prev by Date: Re: copy and mutableCopy
  • Next by Date: Re: copy and mutableCopy
  • Previous by thread: Re: copy and mutableCopy
  • Next by thread: Re: copy and mutableCopy
  • Index(es):
    • Date
    • Thread