Какие задачи больше подходят для NSOperation, чем для GCD? [дубликат]

Мне нравится добавлять функции к jQuery, таким образом, эта функция помогла бы:

jQuery.fn.center = function () {
    this.css("position","absolute");
    this.css("top", Math.max(0, (($(window).height() - $(this).outerHeight()) / 2) + 
                                                $(window).scrollTop()) + "px");
    this.css("left", Math.max(0, (($(window).width() - $(this).outerWidth()) / 2) + 
                                                $(window).scrollLeft()) + "px");
    return this;
}

Теперь мы можем просто записать:

$(element).center();

Демонстрация: Скрипка (с добавленным параметром)

29
задан User97693321 1 February 2013 в 14:28
поделиться

1 ответ

Судя по всему, NSOperationQueue построен на GCD начиная с iOS 4; документы просто не были обновлены. Проверьте эту публикацию сотрудника Apple здесь: https://devforums.apple.com/message/352770 (Вам может потребоваться создать учетную запись). Итак, вы должны следовать совету Майка Абдуллы и использовать самый простой API для поставленной задачи. dispatch_async - это более низкий уровень, как правило, типа C (но не ограничиваясь этим), который подходит для одноразовых и последовательных сделок типа (запустить этот блок в этой очереди, FTW). NSOperationQueues - это вещи более высокого уровня, Objective-C, и они хороши, если вы добавляете много операций в различных точках своего кода и / или вам необходимо управлять параллелизмом, приоритетами и зависимостями. По крайней мере, так я их использую.

13
ответ дан 28 November 2019 в 01:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: