Я пытаюсь понять код Objective C и застрял в этой строке

Код:

NSOperationQueue *queue = [[NSOperationQueue alloc] init];

Я понимаю, что эта строка создает новый экземпляр класса NSOperationQueue. Но что делает этот экземпляр NSOperationQueue? Кто-нибудь может мне это объяснить? Поскольку я лучше знаком с Java, было бы очень полезно, если бы кто-нибудь мог предложить мне эквивалентный фрагмент кода на Java.

3
Android-Droid 29 Авг 2011 в 18:17

3 ответа

Лучший ответ

NSOperationQueue реализует в основном те же функции, что и ThreadPoolExecutor плюс BlockingQueue в Java.

То есть он принимает набор NSOperation s (приблизительно Runnables в Java) и затем выполняется асинхронно.

С дополнительным бонусом, что очередь операций настраивается на текущие условия выполнения.

11
PeyloW 29 Авг 2011 в 14:52

Runnables нельзя настроить так, чтобы они зависели друг от друга, что является важной функцией NSOperation. Пользователь может написать собственный код (может использовать Future.get (), BlockingQueue.take ()) для достижения того же эффекта.

4
Yingpei Zeng 28 Май 2013 в 09:16

Взгляните на NSOperationQueue ' s документация. По сути, это класс, предназначенный для выполнения нескольких NSOperation. Они чем-то похожи на потоки (и выполняются в фоновом потоке с помощью NSOperationQueue).

Вот еще кое-что, если вам нужны дополнительные сведения: краткое руководство и полная документация .

2
Andrea Bergia 29 Авг 2011 в 14:27