.ral:cr - 17 Aprilie 2013 10:38 AM
Ouch, my bad, uitasem de dispatch_async, acum functioneaza cum trebuie. Singura chestie, dar care nu ma deranjeaza asa tare, este ca thumburile locale apar cu o mica intariere.
Banuiesc ca ai utilizat
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
In felul asta , cind dispatch_async() are treaba cu I/O poate fi pus in pauza de OS , motiv pentru care , atunci cand vede ca o actiune a sa este blocata , initiaza alta cerere si tot asa .
Incearca sa utilizezi ceva de genul
dispatch_queue_t myQ;
queue = dispatch_queue_create("com.example.MyQ", NULL);
Ca sa scapi de ea folosesti
dispatch_release (myQ)
in dealloc sau unde crezi tu ca este cazul .
“A serial queue executes only one task at a time and always pulls tasks from the head of the queue. You might use a serial queue instead of a lock to protect a shared resource or mutable data structure. Unlike a lock, a serial queue ensures that tasks are executed in a predictable order. And as long as you submit your tasks to a serial queue asynchronously, the queue can never deadlock”
vezi aici