I have a property:
@property (readonly) NSDictionary *someDictionary;
This property should be computed on demand, and should be accessible by several
threads.
My current implementation is:
- (NSDictionary *)someDictionary;
{
static NSDictionary *someDictionary;
static dispatch_once_t justOnce;
dispatch_once( &justOnce, ^
{
// create a temp dictionary (might take some time)
someDictionary = temp;
}
);
return someDictionary;
}
The first thread which needs someDictionary will trigger its creation. Ok.
But what happens when another thread wants to access someDictionary while it is
still being created? I guess it will receive just nil.
This would be not correct; it really should wait until the dictionary is ready.
How to achieve this? Use a lock? Use @synchronize?
10.8.2 with Arc.
Gerriet.
_______________________________________________
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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to [email protected]