scheduledTimerWithTimeInterval is a one of the class method of the NSTimer class, which is used to create timers. In general, we can say that NSTimer creates a object that sends a message to another object telling it to when to fire a timer or update it in a certain time intervals. And "scheduledTimerWithTimeInterval" schedules the timer into RunLoops that has two different methods to write it...
scheduledTimerWithTimeInterval:invocation:repeats: and
scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:
that basically creates the timer and schedules it on the current run loop in default mode. We will see this through a example...
In the example, first of all we'll create a timer, will pass the NSTimer object to our method and then we can stop the timer.
Creating a timer with the scheduledTimerWithTimeInterval
NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:.1 target:self selector:@selector(moveRect) userInfo:nil repeats:YES];
"scheduledTimerWithTimeInterval:.1" setting the duration of time for the timer, and if you set "repeats:YES" timer will repeat calling the selector every time in the given duration.
"moveRect" is the name of method that is called by @selector.. and to stop the timer we can simply write
[timer invalidate];
Example Code:
#import <UIKit/UIKit.h>
@interface timerViewController : UIViewController {
NSTimer* timer;
}
@end
---------------
#import "timerViewController.h"-
@implementation timerViewController
- (void)dealloc {
[super dealloc];
}
- (void)viewDidLoad {
[super viewDidLoad];
CGRect RectFrame;
RectFrame.origin.x = 25;
RectFrame.origin.y = 300;
RectFrame.size.width = 20;
RectFrame.size.height = 20;
for(int i = 0; i < 10; i++)
{
UIView *myView = [[UIView alloc] initWithFrame:RectFrame];
[myView setTag:i];
[myView setBackgroundColor:[UIColor orangeColor]];
RectFrame.origin.x = RectFrame.origin.x + RectFrame.size.width + 10;
[self.view addSubview:myView];
}
timer = [NSTimer scheduledTimerWithTimeInterval:.1 target:self selector:@selector(moveRect) userInfo:nil repeats:YES];
}
-(void)moveRect
{
int r = rand() % 10;
for(UIView *aView in [self.view subviews])
{
if([aView tag] == r)
{
int movement = rand() % 100;
CGRect RectFrame = aView.frame;
RectFrame.origin.y = RectFrame.origin.y - movement;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:.2];
[aView setFrame:RectFrame];
[UIView commitAnimations];
if(RectFrame.origin.y < 0)
{
[timer invalidate];
}
}
}
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
@end
On running the application... it should look like the given image

If you are facing any programming issue, such as compilation errors or not able to find the code you are looking for.
Ask your questions, our development team will try to give answers to your questions.