Use GCD dispatch_after instead of performBlock:afterDelay: