Use NSTimer. Use this to set up a method call in three seconds. It will be called only once:
[NSTimer scheduledTimerWithTimeInterval: 3
target: self
selector: @selector(method:)
userInfo: nil
repeats: NO];
The method should look like this:
- (void) method: (NSTimer*) theTimer;
You can pass parameters to the method using userInfo (in the example above, nil is set). It can be accessed as [theTimer userInfo].
Use the invalidate method for NSTimer to cancel it.