Работая с некоторым кодом, я сталкиваюсь с циклами выполнения, с которыми я новичок, внутри NSOperation
s.
NSOperation
s заняты загрузкой данных - и пока они занятыесть код для завершения загрузки в форме NSRunLoop
s и спящего потока.
Этот код, в частности, представляет для меня интерес:
while (aCertainConditionIsTrue && [self isCancelled]==NO) {
if(![[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:1.0]]){
[NSThread sleepForTimeInterval:1.0];
}
}
IВы прочитали о циклах выполнения, и runMode:beforeDate:
будет ожидать источника ввода или тайм-аута.Хотя я не на 100% то, что считается входным источником.
При первом выполнении это всегда возвращает NO и достигает sleepForTimeInterval:
.Это плохо?
В определенном служебном классе он сильно ударяется по sleepForTimeInterval:
- по одному разу для каждого потока - что значительно снижает производительность.
Любые лучшие решения для этого или советы