CFRunLoopRunInMode зависает в IOS - PullRequest
       0

CFRunLoopRunInMode зависает в IOS

1 голос
/ 15 декабря 2011

Здравствуйте, у меня проблема с UITableView freeze,

"downloadItem" ниже вызывается, когда кто-то нажимает на кнопку на iPad.Предполагается загрузить файл и затем вернуться.

Во время загрузки, когда я застрял в этой функции, я хочу, чтобы пользовательский интерфейс все еще был отзывчивым, поэтому я установил runloop, как показано ниже., но то, что показано, является основной идеей этого.Я знаю, что это не лучший способ, но по другим причинам я не могу изменить его в настоящее время, особенно из-за существующей сложности фактической функции.

Проблема в том, что у меня также естьUITableView на экране (также как и кнопка), если UITableView нажимается или прокручивается во время выполнения этой функции в цикле выполнения, UITableView иногда зависает и остается замороженным даже после выхода из этой функции.По какой-то причине это происходит не каждый раз, может быть, в 40% случаев.

Кто-нибудь знает, как это исправить, правильно ли выполняется приведенный ниже вызов RunLoop?Почему, когда я нажимаю UITableView в цикле запуска ниже, таблица иногда зависает?

-(IBAction) downloadItem
{
    BOOL downloading=TRUE;
    callFunctionsToStartdownload(...);
    while (downloading) {
        downloading=DownloadSomeBytes(...);  
        CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, YES);
    }
}

спасибо

1 Ответ

0 голосов
/ 15 декабря 2011

В общем, это кажется ненужным. Вы хотите, чтобы обработка загруженных байтов находилась в потоке (к которому это не относится), но фактическое асинхронное NSURLConnection должно выполнять свою работу в потоке (а затем вызывать поток, который его запустил) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...