Waiting for a specified duration in Cocoa
Here's the NSTimer way of doing it. It's might be even uglier than the method you're using, but it allows repeating events, so I prefer it.
[NSTimer scheduledTimerWithTimeInterval:0.5f
target:self
selector: @selector(doSomething:)
userInfo:nil
repeats:NO];
You want to avoid something like usleep() which will just hang your app and make it feel unresponsive.
There is
usleep(1000000);
and
[NSThread sleepForTimeInterval:1.0f];
both of which will sleep for 1 second.