Сон или Пауза NSThread - PullRequest
       2

Сон или Пауза NSThread

4 голосов
/ 31 октября 2011

Я создаю новый поток, который запускает один из моих методов после каждого определенного периода времени.

Теперь я делаю следующее:

NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(setUpTimerThread) object:nil];
 [thread start];

вышеупомянутый метод вызывает мой метод setUpTimerThraed, и этот метод создает NSTimer и вызывает конкретный метод, т.е. syncData, через каждую 1 минуту. Теперь я хочу, чтобы мой метод синхронизации данных отправлял некоторые файлы в папку FTP. и когда он отправляет один файл на FTP, я хочу, чтобы моя «нить» некоторое время не спала.

я использовал

[NSThread sleepForTimeInterval:3.0];

Но этот код блокирует основной поток моего приложения. Есть ли какой-нибудь способ, которым я могу только спать мой поток темы некоторое время так, чтобы это не остановило мое приложение, отвечающее в течение 3 секунд, и не спало мой главный поток. Надеюсь, вы получите то, что я прошу, ребята. Пожалуйста, помогите?

Ответы [ 2 ]

6 голосов
/ 29 февраля 2012

sleepForTimeInterval: спит поток, к которому он вызывается.Попробуйте вызвать спящий поток в том потоке, который вы хотите перевести в спящий режим, а не в основной поток.

замените текущий текущий спящий вызов на

[self performSelector:@selector(sleepThread) onThread:thread withObject:nil waitUntilDone:YES];

, а затем реализуйте этот метод

-(void)sleepThread {
    [NSThread sleepForTimeInterval:3.0];
}
0 голосов
/ 14 июня 2013

Решение ColdLogic верное, но необходимо установить флаг waitUntilDone в YES, в противном случае метод никогда не вызывается.

...