Perform After System Idle Time
Since this type of thing may be useful in other contexts, I’ve decided to generalize it and put it out there for your consumption. It’s a little NSObject category with two new methods:
performSelector:withObject:afterSystemIdleTime:
andperformSelector:withObject:afterSystemIdleTime:withinTimeLimit:
. The first will call the given method on the receiver when the user has been idle for the given period of time. The second method does the same but allows you to set a limit after which it will call the method regardless of idle time, thus preventing the method from being delayed indefinitely.