Using dispatch_once_t per object and not per class
There are multiple sources calling a particular method, but I would like to ensure that it is called exactly once (per object) I would like to use syntax like // method called possibly from multiple places (threads) -(void)finish { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ [self _finishOnce]; // should happen once per object }); } // should only happen once per object -(void)_finishOnce{...} Problem is the token is shared accross all instances of the same class - so not a good solution - is there a dispatch_once_t per object - if not what is the best way to ensure it is