NSObject cancelPreviousPerformRequestsWithTarget any object



我目前正在使用

[NSObject cancelPreviousPerformRequestsWithTarget:self];

取消我的执行选择器doneMoving:。这会导致一个问题,因为我正在运行其他我不想取消的 performSelector。解决方案是使用

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(doneMoving:) object:objectIDontKnow];

但我不知道用原始执行选择器传递的对象。我希望能够取消所有doneMoving:请求,无论传递了什么对象,同时仍然保持我的其他计划方法。谢谢!

尝试以不同的方式重写代码,这样就不会传递对象

- (void)moveObject {
    [self.objectToMove doSmth];
}
- (void)performMoveObjectInFuture:(id)moveObject {
    self.objectToMove = moveObject;
    [self performSelector:@selector(moveObject) withObject:nil afterDelay:2];
}

相关内容

最新更新