2013-05-21 5 views
2

ABAddressBookRef Доступ к коду можно получить только одним потоком. Я думаю, что хорошая модель будет иметь нить для ABAddressBookRef в фоновом режиме, кроме основного потока.Как я могу гарантировать, что NSOperationQueue использует только один поток?

Как я могу убедиться, что есть только один поток при использовании NSOperationQueue? Просто установка максимального параллелизма на 1 не гарантирует, что он будет запущен в том же потоке.

Должен ли я использовать другие уникальные потоки, такие как веб-потоки?

ответ

1

Вы можете вручную создать поток и перенаправить доступ к нему всей адресной книги.

Вы создать поток что-то вроде этого (adapted from documentation):

NSThread* myThread = [[NSThread alloc] initWithTarget:[MyThread new] 
            selector:@selector(myThreadMainMethod) 
            object:nil]; 
[myThread start]; // Actually create the thread 

Обратите внимание, что для потока, чтобы быть полезным, вы должны реализовать цикл запуска в основном методе потока.

See example implementation of run loop in this answer.

Вы тогда в состоянии сделать материал по этой теме через метод NSObject «s performSelector:onThread:withObject:waitUntilDone:.

Здесь представлена ​​библиотека-обертка для ABAddressBookRef, которая реализует эту концепцию - RHAddressBook.

+1

Я не верю, что связанная лицензия позволяет это без большого количества шаблонов. Я добавлю некоторые примеры кода, а не напрямую скопированные из ссылки. –

Смежные вопросы