2011-08-10 13 views
19

Jestem początkującym programistą IOS, ale mam spore doświadczenie w rozwoju Androida. Moje pytanie dotyczy tworzenia i korzystania z timerów specyficznych dla przedziału.IOS - Tworzenie i używanie interwałowych timerów szczegółowych

W android mogłem zrobić timer tak:

timedTimer = new Timer(); 
    timedTimer.scheduleAtFixedRate(new TimerTask() { 
     @Override 
     public void run() { 

      TimedMethod(); 
     } 

    }, 0, 1000); 

Jeżeli przedział wynosi 1000 MS i metoda TimedMethod() jest wywoływana na każdym kleszcza. W jaki sposób chciałbym wdrożyć podobną funkcję w IOS?

Dziękuję bardzo za przeczytanie! Każda pomoc w ogóle byłaby świetna! :-)

Odpowiedz

43

Można użyć powtarzalne NSTimer jak tak:

- (void) startTimer { 
    [NSTimer scheduledTimerWithTimeInterval:1 
            target:self 
            selector:@selector(tick:) 
            userInfo:nil 
            repeats:YES]; 
} 

- (void) tick:(NSTimer *) timer { 
    //do something here.. 

} 
5

Korzystając

[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerCallback) userInfo:nil repeats:YES]; 

w tej samej klasie, jak nazywa się powyżej metoda utwórz metodę o nazwie timerCallback. Będzie to wywoływane za każdym razem, gdy uruchomi się twój timer; co 1000 milisekund.

+0

To jest złe. 'scheduledTimerWithTimeInterval:' zakłada, że ​​jego pierwszy argument będzie w * sekundach *, a nie milisekundach. –

+1

Whoops. Dzięki za poprawienie tego. Odpowiedź zmieniona. –

0

Zastosowanie metody poniżej obecnej w pliku NSTimer.h Ramowej Fundacja

składnię:

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo; 

Zastosowanie:

#define kSyncTimerLength 4 //Declare globally 
-(void) timerActivityFunction; //Declare in interface 

[NSTimer scheduledTimerWithTimeInterval:kSyncTimerLength target:self 
     selector:@selector(timerActivityFunction) userInfo:nil repeats:NO]; 

-(void) timerActivityFunction { 
    // perform timer task over-here 
} 
0

Dla Swift:

Tworzenie timer obiekt używając poniższej linii, która wywoła upl Metoda OAD co 10 sekund. Jeśli uzyskasz nie implementuje methodSignatureForSelector, rozszerz swoją klasę o NSObject. Przeczytaj ten artykuł, aby uzyskać więcej informacji. Object X of class Y does not implement methodSignatureForSelector in Swift

timer = NSTimer.scheduledTimerWithTimeInterval(10.0, target: self, selector: "upload", userInfo: nil, repeats: true) 

func upload() { 
     print("hi") 
    } 
Powiązane problemy