Процесс на уровне операционной системы


Процесс на уровне операционной системы

Как видите, вся "работа" приведенного выше класса, какой бы она ни была, разделяется на ряд мелких частей. Код этого класса предназначен лишь для имитации некоторых медленно выполняемых операций, и ни один из его методов не делает ничего такого, что вообще отнимало бы сколько-нибудь времени. Однако самое интересное, что каждый его метод содержит вызов метода sleepForTimelnterval: из класса NSThread, благодаря чему данное приложение, а точнее, поток, из которого этот метод вызывается, по существу, приостанавливается, ничего не делая в течение промежутка времени, заданного в секундах. Кроме того, в начале и в конце метода doWork: содержится код для расчета времени, потребовавшегося на выполнение всей работы.

Теперь откройте файл SlowWorkerViewController.xib и перетащите объекты Round Rect Button и Text View из библиотеки в пустое окно View, расположив их так. Нажмите клавишу и проведите соединительную линию от пиктограммы Files Owner, чтобы связать два выхода контроллера представления с кнопкой и текстовым представлением. Выберите кнопку и перейдите к инспектору связей, чтобы связать событие Touch Up Inside с методом doWork: контроллера представления. Наконец, выберите текстовое представление и перейдите к инспектору атрибутов, чтобы сбросить флажок Editable в правом верхнем углу окна данного инспектора, а затем удалите исходный текст из текстового представления.

Сохраните результаты своих трудов и выберите команду Build & Run в среде Xcode. Приложение должно запуститься на выполнение, и если вы нажмете кнопку Start Working!, то в течение примерно десяти секунд, т.е. суммарного времени ожидания, будет выполняться задание, прежде чем на экране появятся результаты. Ожидая этих результатов, обратите внимание на то, что кнопка Start Working ( остается все это время темно-синей и не возвращается в свое обычное состояние до тех пор, пока задание не будет выполнено. Кроме того, текстовое представление данного приложения никак не реагирует до тех пор, пока не будет выполнено задание. Постукивание пальцем по любому участку экрана не дает никакого результата. В действительности единственный способ взаимодействия с приложением в течение всего этого времени состоит в том, чтобы стукнуть пальцем по кнопке возврата в исходное состояние, чтобы выйти из данного приложения. Однако именно этой ситуации нам и хотелось бы избежать! В данном конкретном случае это не так уж и плохо, поскольку приложение словно зависает на несколько секунд. Однако если ваше приложение регулярно зависает подобным образом намного дольше, то его применение на практике доставит одно разочарование. В самом худшем случае ваше приложение может быть удалено как отдельный процесс на уровне операционной системы, если оно не будет реагировать слишком долго. В любом случае вы наживете себе недовольных пользователей вашего приложения, а возможно, и потеряете их доверие!
  • Дата: 31-12-2014, 16:45

Предыдущие статьи сайта:

Понравилась статья? Ставь лайки, рассказывай друзьям!



Отзывы о статье: Процесс на уровне операционной системы

Технологии, секреты и фишки Apple: Iphone, iPad, iPod