IOS - создание и использование специальных таймеров
Я новичок IOS, но у меня есть большой опыт в разработке Android. Мой вопрос касается создания и использования таймеров с интервалом.
В android я мог бы легко сделать таймер следующим образом:
timedTimer = new Timer();
timedTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
TimedMethod();
}
}, 0, 1000);
Если интервал составляет 1000 MS, и на каждом тике вызывается метод TimedMethod(). Как я могу реализовать аналогичную функцию в IOS?
Большое спасибо за чтение! Любая помощь вообще была бы замечательной!: -)
Ответы
Ответ 1
Вы можете использовать повторяющийся NSTimer
так:
- (void) startTimer {
[NSTimer scheduledTimerWithTimeInterval:1
target:self
selector:@selector(tick:)
userInfo:nil
repeats:YES];
}
- (void) tick:(NSTimer *) timer {
//do something here..
}
Ответ 2
Использование
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerCallback) userInfo:nil repeats:YES];
В том же классе, который вы назвали выше, создайте метод timerCallback
. Это будет вызываться каждый раз, когда срабатывает ваш таймер; каждые 1000 миллисекунд.
Ответ 3
Использовать ниже метод, присутствующий в файле NSTimer.h Foundation Framework
Синтаксис:
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
Использование:
#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
}
Ответ 4
Для Swift:
Создайте объект таймера, используя нижнюю строку, которая будет вызывать метод загрузки каждые 10 секунд. Если вы получаете не реализует методSignatureForSelector, расширьте свой класс с помощью NSObject. Прочтите это для дополнительной информации Объект X класса Y не реализует методSignatureForSelector в Swift
timer = NSTimer.scheduledTimerWithTimeInterval(10.0, target: self, selector: "upload", userInfo: nil, repeats: true)
func upload() {
print("hi")
}