Cancel [self performSelector:... withObject:nil afterDelay:20];
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(sr) object:nil];
Please read the documentation. :) The documentation for -performSelector:withObject:afterDelay:
points you to the methods for canceling a queued perform request.