Я очень новичок в программировании на Objective C и начал программировать простое упражнение.Я хочу, чтобы мой main()
вызывал метод из класса и из этого метода использовал executeSelector: (SEL) withObject: afterDelay.Проблема в том, что он не вызывает метод и тоже не задерживает.// main
int main (int argc, const char * argv[])
{
...
State * state = [[State alloc] init];
[state startTimer];
...
}
// State.m
-(void)complete{
NSLog(@"The door is Open (OPENING ==> OPEN)");
[door setState:[door openState]];
}
-(void)startTimer{
NSLog(@"The timer has started on Opening state");
// timer = [NSTimer scheduledTimerWithTimeInterval:30 target:self selector:@selector(complete) userInfo:nil repeats:NO];
// [timer retain];
// [timer fire];
// [timer release];
[self performSelector: @selector(complete) withObject:nil afterDelay:30];
}
Я немного изменил код, но это то же самое.Это не проблема в остальной части кода, но в методе startTimer()
, потому что он не вызывает метод complete()
.Если я использую NSThread (который закомментирован), он будет вызывать его, но все равно без задержки.Я просмотрел все места и увидел, что для моих целей это лучшее решение, но оно не работает для меня.Чтобы получить представление о том, что должна делать программа, состояние должно оставаться в течение 30 секунд при «ОТКРЫТИИ», а затем complete
и переводить его в состояние ОТКРЫТО.