Всякий раз , когда я пытаюсь загрузить большой файл с фоновым UIScrollView
, MPMapView
или что - то, процесс загрузки получает остановился , как только сенсорный экран iPhone. К счастью, в прекрасном сообщении в блоге Йорна предлагается альтернативный вариант - использование NSRunLoopCommonModes
для подключения.
Это дает мне возможность подробно изучить два режима, NSDefaultRunLoopMode и NSRunLoopCommonModes, но в документе Apple не объясняется любезно, кроме как
NSDefaultRunLoopMode
Режим работы с источниками ввода, отличными от объектов NSConnection. Это наиболее часто используемый режим цикла выполнения.
NSRunLoopCommonModes
Объекты, добавленные в цикл выполнения, использующие это значение в качестве режима, отслеживаются всеми режимами цикла выполнения, которые были объявлены как член набора «общих» режимов; подробности см. В описании CFRunLoopAddCommonMode.
CFRunLoopAddCommonMode
Источники, таймеры и наблюдатели регистрируются в одном или нескольких режимах цикла выполнения и запускаются только тогда, когда цикл выполнения работает в одном из этих режимов. Общие режимы - это набор режимов цикла выполнения, для которых вы можете определить набор источников, таймеров и наблюдателей, которые используются этими режимами. Вместо регистрации источника, например, для каждого конкретного режима цикла выполнения, вы можете зарегистрировать его один раз в общем псевдорежиме цикла выполнения, и он будет автоматически зарегистрирован в каждом режиме цикла выполнения в наборе общих режимов. Точно так же, когда режим добавляется к набору общих режимов, любые источники, таймеры или наблюдатели, уже зарегистрированные в общем псевдорежиме, добавляются к недавно добавленному общему режиму.
Кто-нибудь может объяснить эти двое на человеческом языке?
источник
NSRunLoopCommonModes
разрешает событие таймера при прокруткеUIScrollView
.NSDefaultRunLoopMode
запретить таймер при прокрутке.