Okay, just saw an interesting post on this: http://stackoverflow.com/questions/1459598/how-to-copy-an-object-in-objective-c
This is quite different from what I've generally seen, which just does: MyClass* copy = [[self class] allocWithZone:zone]; then uses accessors to assign all the properties, and returns the copy. But does that just give me a shallow copy? Do I really have to implement the version in the post -- that is, do I have to "call copyWithZone on all of [my] fields" to get a true, mutable copy, that doesn't muck with the original? I guess it makes sense, but I'm kind of surprised that the normal copy (i.e., the one I see everywhere) doesn't do that already, since that's what a "copy" seems to be, in the most general sense. (If I "copy" a paper document, I can burn the copy, write all over it, or whatever I want, without touching the original.) J. On 2012-02-12, at 4:25 PM, James Maxwell wrote: > Okay, so I'm officially confused. > > I have an object with isEqual set up to help me limit the number of "unique" > objects I can put in a Dictionary. Basically, the object has a few properties > which account for "equality", and some properties that don't matter. For > example, propA and propB are used in isEqual, but propC isn't. The point is > that I can create a set with objects where only propA and propB are > different, and propC just is irrelevant. Maybe that seems weird, but it's > what I need. > > But what I don't get is how hash plays into all this. I've always read that I > have to override hash when I override isEqual, but I don't exactly understand > what that means or does. What I've done is to make a hash that is equal when > two objects have the same values for propA and propB (ignoring propC). That's > how I interpreted the few threads I've read about overriding hash... > > But what I need to do in my code, right now, is to copy an object, then alter > some properties of the copy, but not the original -- a typical reason for > wanting a copy. But I'm seeing that the copy has the same hash and appears to > be the same object, since changing properties of the copy changes the > original. So does the system see the matching hashes as identical objects, > not just the collection classes? Do I have to manually implement some sort of > deepCopy method? Or, can I just change hash, so that the copy is a different > instance, without losing the functionality I need for collections? I don't > understand why I'd need to make a deepCopy, since that's what copy is for... > > Any help greatly appreciated. > > J. > > > ------------------------------------------------------ > James B. Maxwell > Composer/Researcher/PhD Candidate > > > > > > > _______________________________________________ > > Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) > > 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: > https://lists.apple.com/mailman/options/cocoa-dev/jbmaxwell%40rubato-music.com > > This email sent to jbmaxw...@rubato-music.com ------------------------------------------------------ James B. Maxwell Composer/Researcher/PhD Candidate _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com