iOS. Приемы программирования
Шрифт:
Очевидно, что главный поток не блокируется и что обе инициирующие операции работают параллельно с главным потоком. Это доказывает, что в операционной очереди сохраняется параллелизм даже тогда, когда в нее добавляются две непараллельные операции. Операционная очередь управляет потоками, необходимыми для осуществления операций.
Если бы вы создавали подклассы от NSOperation и добавляли в операционную очередь экземпляры нового класса, то ситуация складывалась бы несколько иначе. Не забывайте о некоторых моментах.
Если обычные операции, являющиеся подклассами от NSOperation, добавлять в операционную очередь, то они будут работать асинхронно. Поэтому необходимо переопределить метод экземпляра isConcurrent, относящийся к классу NSOperation, и возвратить значение YES.
Необходимо подготовить операцию к отмене, периодически проверяя значение метода isCancelled при осуществлении основной задачи операции, а также в методе start еще до запуска самой операции. В таком случае метод start вызывается операционной очередью после того, как операция будет добавлена в очередь. В этом методе проверяется, не отменена ли операция. Это делается с помощью метода isCancelled. Если операция отменена, просто верните такое значение от метода start. В противном случае вызовите метод main из метода start.
Переопределите метод main собственной реализацией основной задачи, которую должна выполнять операция. Обязательно выделите и инициализируйте в этом методе ваш собственный автоматически высвобождаемый пул и высвободите его непосредственно перед актом возврата.
Переопределите методы isFinished и isExecuting операции и верните соответствующие логические (BOOL) значения, показывающие, завершена операция или продолжается в настоящий момент.
Вот объявление операции (.h-файл):
Теперь этот операционный класс можно использовать в любом другом классе, например в делегате вашего приложения. Вот объявление делегата приложения, в котором задействуется этот новый класс операции, добавляемый в операционную очередь:
За Горизонтом
8. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
рейтинг книги
Инженер Петра Великого 2
2. Инженер Петра Великого
Фантастика:
попаданцы
альтернативная история
фэнтези
рейтинг книги
На границе империй. Том 7. Часть 5
11. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
рейтинг книги
Гром над Академией. Часть 1
2. Гром над миром
Фантастика:
фэнтези
боевая фантастика
рейтинг книги
Искатель 6
6. Валинор
Фантастика:
рпг
фэнтези
попаданцы
гаремник
рейтинг книги
Идеальный мир для Лекаря 19
19. Лекарь
Фантастика:
юмористическое фэнтези
аниме
рейтинг книги
Звездная Кровь. Изгой
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
рейтинг книги
Идеальный мир для Лекаря 17
17. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
рейтинг книги
Мусорщик
3. Наемник
Фантастика:
боевая фантастика
космическая фантастика
рейтинг книги