objective c - Is it possible to cancel PerformSelector on multiple objects? -
i have few classes can call performselector:afterdelay.
in circumstances want cancel , of them.
however cancelperformselector type methods take target, seem there no way cancel in 1 go (as there different targets)?
unless specifying nil target cancel everything?
or target specified [nsrunloop mainrunloop] cancel such as
[nsobject cancelpreviousperformrequestswithtarget:[nsrunloop mainrunloop]]
assuming have view controller declared similar following:
@interface carviewcontroller : uiviewcontroller @property (strong) id myobject; @end also assuming you've registered request perform selector myobject instance somewhere in implementation code below:
[self.myobject performselector:@selector(someselector) withobject:nil afterdelay:0.0]; for sake of argument, want view controller cancel previous perform requests before unloaded memory, -viewwillunload message like:
- (void)viewwillunload { [nsobject cancelpreviousperformrequestswithtarget:self.myobject] } this cancel perform requests registered particular instance. joe pointed out, if not keeping strong reference objects , you're storing objects in nsarray, need iterate array , call +cancelpreviousperformrequestswithtarget: each element of array, or nsarray's -enumerateobjectsusingblock::
- (void)viewwillunload { [myarray enumerateobjectsusingblock:^(id obj, nsuinteger idx, bool *stop) { [nsobject cancelpreviousperformrequestswithtarget:obj]; }]; } hope helps.
Comments
Post a Comment