Re: Determining whether a dictionary is mutable or not
Re: Determining whether a dictionary is mutable or not
- Subject: Re: Determining whether a dictionary is mutable or not
- From: Tito Ciuro <email@hidden>
- Date: Fri, 14 Jan 2011 12:25:57 +0100
Hi Mike,
Given that the caller can pass a NSDictionary or an NSMutableDictionary, I wanted to test its mutability before calling setObject:forKey:. In order to avoid calling mutableCopy each time, I thought it would be more efficient to test it and then call mutableCopy only when needed.
Thanks for the help,
-- Tito
On Jan 14, 2011, at 12:15 PM, Mike Abdullah wrote:
> If you want to test if a dictionary is immutable, you are almost certainly doing it wrong. When passed a dictionary in to a method either:
>
> A) Make a mutable copy if that's what you need
> B) -copy it if you want it to be immutable. (This is not inefficient as it sounds because immutable objects implement -copy to do a -retain and return self instead)
>
> On 14 Jan 2011, at 10:48, Tito Ciuro wrote:
>
>> Hello,
>>
>> Trying to determine whether an NSDictionary is mutable or not fails with these two tests:
>>
>> // Variable info could be NSDictionary or NSMutableDictionary. Assume it's an NSDictionary.
>>
>> BOOL isKindOfClass = [info isKindOfClass:[NSMutableDictionary class]];
>> BOOL respondsToSelector = [info respondsToSelector:@selector(setObject:forKey:)];
>>
>> After executing the above statements, both variables 'isKindOfClass' and'respondsToSelector' are set to YES.
>>
>> When I obtain the class type of 'info', I get:
>>
>> (gdb) po [info class]
>> NSCFDictionary
>>
>> The question is: if 'info' is an immutable dictionary, why is isKindOfClass and respondsToSelector telling me that it is mutable?
>>
>> Thanks,
>>
>> -- Tito
>> _______________________________________________
>>
>> 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