Re: Objective-C basics - (Why NSNumber conforms to NSCopying protocol)
Re: Objective-C basics - (Why NSNumber conforms to NSCopying protocol)
- Subject: Re: Objective-C basics - (Why NSNumber conforms to NSCopying protocol)
- From: Dave <email@hidden>
- Date: Thu, 11 Aug 2016 13:17:33 +0100
Also, beware the “copy” attribute on properties, this *always* creates an immutable copy. If you want to copy a Mutable Object you need to explicitly call mutableCopy, e.g.
newObject.prop = [self.prop mutableCopy];
I mention this, because if you are writing copyWithZone methods then this will bite you!
You should also look at NSCoding, this is the mechanism used to archive and unarchive objects (e.g. create (functionally) Identical Copies), once you understand how this works, it should be obvious why copy and isEqual work the way they do.
All the Best
Dave
> On 11 Aug 2016, at 12:31, Sasikumar JP <email@hidden> wrote:
>
> Quincey, David,
>
> Thank you for the detailed explanation.
>
> Regards
> Sasikumar JP
>
> On 11 August 2016 at 12:34, Quincey Morris <
> email@hidden> wrote:
>
>> On Aug 10, 2016, at 23:32 , Sasikumar JP <email@hidden> wrote:
>>
>>
>> what was the reason NSNumber conforms to NSCopying protocol.
>>
>>
>> 1. It actually inherits conformance from its superclass, NSValue.
>>
>> 2. The fact than an object is immutable does not (in general) mean that a
>> copy can be represented by the same object reference. For example, an
>> object that contained its own date of creation might be immutable, but a
>> copy might have a different date, and therefore be a different object.
>> Putting this another way, the immutability does not make NSCopying
>> conformance irrelevant.
>>
>> 3. NSNumber is one of a group of classes that represent “serializable”
>> objects (for property lists, for example). Since these are often arranged
>> in heterogenous hierarchies using arrays, sets and dictionaries, it’s
>> convenient that they share behavior. If all property list classes conform
>> to NSCopying, then property lists can be deep copied without special code.
>>
>> 4. Objects used as NSDictionary keys must conform to NSCopying. It would
>> be a hardship if this excluded NSNumber.
>>
>> So it turns out to be easier to have NSNumber conform to NSCopying, than
>> to avoid conformance.
>>
>>
> _______________________________________________
>
> 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