On Mar 31, 2014, at 10:16 PM, Trygve Inda <cocoa...@xericdesign.com> wrote:
> I need to be able to set a new myDict and not have it happen between the > reading of different values from the dictionary by other threads. Don’t expose the dictionary in mutable form. You can’t make that thread-safe unless all the clients voluntarily agree to do something like wrap their usage with @synchronized blocks using the dictionary as a parameter. For example, > @synchronize(myDict) > { > myCopy = [[NSDictionary alloc] initWithDictionary:myDict copyItems:YES]; > } If some other thread mutates myDict during this block, you’ll probably crash or corrupt the heap. I’d recommend making your property an immutable NSDictionary instead. (I’ve found that exposing mutable collections as properties usually doesn’t work well. Not just because of threading, but because the owning object loses all control over what’s in the collection.) —Jens _______________________________________________ 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