How to implement readonly property
How to implement readonly property
- Subject: How to implement readonly property
- From: "Gerriet M. Denkmann" <email@hidden>
- Date: Mon, 12 Nov 2012 19:56:37 +0700
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@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