Таймер не повторяется (Grand Central Dispatch)

Я пытаюсь узнать, как отправлять вычисления на фоновый поток и, в конечном итоге, обновлять интерфейс. Когда я пытаюсь сделать это в существующем проекте с Картами Google, «фон», за которым следует «главный», печатается один раз. Больше не печатает, как если бы таймер не повторялся.

Кроме того, когда я создаю пустое приложение и добавляю этот код, ничто не печатает вообще.

let queue = dispatch_queue_create("myTimer", nil); let timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC, 1 * NSEC_PER_SEC); dispatch_source_set_event_handler(timer) { println("background") dispatch_async(dispatch_get_main_queue(), { println("main") }) } dispatch_resume(timer) 

Убедитесь, что что-то долговечное имеет ссылку как на эту очередь, так и на этот таймер. Без явной проверки, мое впечатление от вашего фрагмента здесь заключается в том, что timer и queue будут выпущены, когда это выходит за рамки. Функция dispatch_resume может привести к тому, что первое событие будет помещено в очередь, что может привести к тому, что queue и timer будут жить достаточно долго, чтобы выполнить первую итерацию, после чего их учетные записи будут равны нулю, и они будут освобождены.

Постарайтесь, чтобы они держались на некоторое время …

Например, начиная с шаблона проекта приложения iOS Single View в Xcode и с помощью следующего в AppDelegate.swift таймер повторяет только штраф:

 import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? var queue: dispatch_queue_t? var timer: dispatch_source_t? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { queue = dispatch_queue_create("myTimer", nil); timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC, 1 * NSEC_PER_SEC); dispatch_source_set_event_handler(timer) { println("background") dispatch_async(dispatch_get_main_queue(), { println("main") }) } dispatch_resume(timer) return true } } 
  • iOS UITableView: изменение цвета фона таблицы переопределяет цвет фона ячеек
  • Не удалось загрузить файл символа и несоответствие UDID - как исправить?
  • iOS: изменение представления на backgroung не обновляет то, что видно до того, как приложение вернется на передний план
  • Отрегулируйте значение y в UITableView на Story Board программно
  • Stripe API дает файл SenTestingKit / SenTestingKit.h не найден
  • Почему окно автореализовывается в приложении: didFinishLaunchingWithOptions: и выпущено в dealloc?
  • Добавление .xib, .h &. м к существующей раскадровке.
  • Инструменты говорят, что куча растет
  • XCode iPhone SDK - сохранить NSInteger в начале
  • Можно ли добавить новый атрибут в Core Data без проблем с пользователями и их текущими данными?
  • Проблема с подписями кода ad-hoc выпуска второй цели
  • Interesting Posts

    функция запуска в зависимости от переданного целого в быстром

    Swift: релиз / ресурсы AVPlayer

    Горизонтальная прокрутка UICollectionView не прокручивается до последнего элемента

    Ошибка при подключении iPod touch с телефоном

    Обрабатывать несколько несанкционированных запросов после истечения токена доступа

    Переключение представлений в соответствии с ориентацией устройства

    Есть ли официальная ссылка на то, что время автономной работы является одной из причин, почему сборщик мусора не был включен в iOS?

    сертификат разработчика iOS

    Как я могу заставить видео воспроизводить звук, даже если телефон молчит или вибрирует?

    Мобильное обнаружение не работает должным образом

    Дублирование записей CoreData с синхронизацией iCloud

    Баннер AdMob с быстрым использованием xcode 6

    Корреляция NSOuputStream / NSInputStream

    Если приложение отправляет HTTP-запрос во время завершения, получит ли сервер его?

    Хотите расширить и свернуть раздел UITableview

    Давайте будем гением компьютера.