Ah, thanks. That's here:

<http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Collections/Articles/Sets.html>

I was only looking at the NSSet docs.

--Andy


On Feb 20, 2011, at 1:03 AM, Roland King wrote:

> 
> On 20-Feb-2011, at 1:54 PM, Andy Lee wrote:
> 
>> 
>> One thing I'm puzzled about is that NSSet does not copy its entries the way 
>> NSDictionary copies its keys. This is implied by the member: documentation 
>> quoted earlier:
>> 
>> "If the set contains an object equal to object (as determined by isEqual:) 
>> then that object (***typically this will be object***), otherwise nil."
>> 
>> A quick experiment confirms that elements are not copied, which leads to the 
>> risk that NSDictionary avoids. If elements of the set happen to be mutable, 
>> one element could mutate in such a way as to be isEqual: to another. This 
>> can be demonstrated actually happening:
>> 
> 
> No experiment needed - it's in the documentation .. quoting .. 
> 
> "The objects in a set must respond to the NSObject protocol methods hash and 
> isEqual: (see NSObject for more information). If mutable objects are stored 
> in a set, either the hash method of the objects shouldn’t depend on the 
> internal state of the mutable objects or the mutable objects shouldn’t be 
> modified while they’re in the set. For example, a mutable dictionary can be 
> put in a set, but you must not change it while it is in there. (Note that it 
> can be difficult to know whether or not a given object is in a collection)."
> "NSSet provides a number of initializer methods, such as setWithObjects: and 
> initWithArray:, that return an NSSet object containing the elements (if any) 
> you pass in as arguments. Objects added to a set are not copied (unless you 
> pass YES as the argument to initWithSet:copyItems:). Rather, an object is 
> added directly to a set. In a managed memory environment, an object receives 
> a retain message when it’s added; in a garbage collected environment, it is 
> strongly referenced. For more information on copying and memory management, 
> see “Copying Collections.”"
> 

_______________________________________________

Cocoa-dev mailing list ([email protected])

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to