If you want to run oneTimer() only once after a delay of 3 seconds then you can use performselector_after_delay or scheduleOnce_delay which will run only once. e.g.
[self performSelector:@selector(oneTimer) withObject:nil afterDelay:3];
OR
[self scheduleOnce:@selector(oneTimer) delay:3];