Я пытаюсь перевести некоторый Swift, который использует Timer для ввода слов для эффекта новостной ленты, в Objective -C.
В Swift вы можете сделать что-то вроде:
func type(string: String) {
var wordArray = ["Sox Win", "Verlander To Start", "Race Tightens"] // an array of strings
var wordIndex = 0
Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { (timer) in
self.textview.text.append(wordsArray[wordIndex])
wordIndex += 1
if wordIndex == wordArray.count {
timer.invalidate()
}
}
}
}
Однако в Objective-C вы обычно видите:
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval: 1.0
target: self
selector:@selector(update:)
userInfo: nil repeats:YES];
-(void) update:(NSTimer*)timer
{
int i=0;i<4;i++ {
NSLog(@"another second");
}
timer.invalidate;
timer = nil;
}
Используя обработчик, я не могу понять, как перебирать слова в массиве, не создавая массив снова и снова, который, очевидно, не работает.
- (void)updateView:(NSTimer *)timer
{
NSArray*items =@[@"item1", @"item2", @"item3", @"item4", @"item5"];
for(int i=0;i<[items count];i++){
self.textView.text = [self.textView.text stringByAppendingString:items[i]];
if (i == [items count]) {
[self.timer invalidate];
self.timer = nil;
}
}
}
Должен ли я что-то делать с userInfo или как использовать время для обновления одного слова за раз? Заранее спасибо за любые предложения.