我有以下方法:
-(void) waitForStatusChangeAndPerformBlock:(MyBlockType)successBlock;
这是该方法应该做的:
- 检查一些
status
是否具有正确的值 - 如果它确实调用了块
successBlock
- 如果不等待
status
更改为给定值,然后调用块successBlock
我考虑过 KVO 来检查值是否已更改,但是我必须将块存储在某个实例变量中,或者更糟的是,存储在一个数组中,并且我会丢失当前方法调用的上下文。所以我真正想要的是这样的:
-(void) waitForStatusChangeAndPerformBlock:(MyBlockType)successBlock{
if(self.status == kDesiredStatus){
successBlock;
} else {
[TheMagicDispatchWaitUntil:(self.status == kDesiredStatus) andThenDoThis:^{
successBlock;
}];
}
}
有没有办法在没有 KVO 或其他辅助方法的情况下实现这一点?