У меня NSOperationQueue, который работает в другом потоке, чем все приложение. Я добавляю NSOperation в очередь, что в основном естьNSOperation с циклом NSTimer, как остановить его
-(void)main{
[self updatePallets];
NSTimer * timer = [NSTimer scheduledTimerWithTimeInterval: 5.0 target:self selector: @selector(updatePallets) userInfo: nil repeats: Yes];
NSRunLoop * runLoop = [NSRunLoop currentRunLoop];
[runLoop addTimer:timer forMode: NSRunLoopCommonModes];
[runLoop run];
}
И он отлично работает, как я и хотел. Но как отменить этот тип операции. На Моей главной теме я хочу, например, сделать что-то вроде этого:
[queue cancelAllOperations];
[queue waitUntilAllOperationsAreFinished];
И я хочу, чтобы повесить основной поток и подождать, пока она не будет закончена. Затем выполните некоторые действия. Но он не отменяет никакой операции (есть только один с таймером), что я должен делать? Я также попытался добавить новую операцию в очередь после посыльного диспетчера, но все равно не могу ее остановить.
Вы сделали недействительным таймер? '[timer invalidate]' – anhtu
Нет. Я просто попытался отменить операцию. Поэтому мне нужно иметь ссылку на таймер ... Возможно ли отменить все операции, а затем остановить все операции? Могу ли я добавить некоторые условия для runLoop? –
Я не уверен насчет отменыAllOperations. Но с NSTimer я использую '[timer invalidate]' – anhtu