2017-02-21 1 views
1

Мы пытаемся подключить наше приложение для Android к iOS с помощью Swift 3. В нашем приложении для Android мы используем RxJava2 для улучшения времени отклика нашего приложения. Мы получаем обновления от GPS, iBeacons и CMMotionActivity.iOS Swift: как сделать асинхронное/реактивное/событие для Swift 3

Мы замечаем значительные задержки в приложении iOS/Swift 3, потому что обновления в делегате iBeonon имеют преимущество перед другими делегатами (на самом деле другие делегаты получают вызов в 3 раза медленнее, чем обычно, потому что делегат iBeonon перехватывает приоритет).

а) Как я могу убедиться, что все делегаты дозвонились с равной вероятностью (как будто они существуют в изоляции)

б) Есть ли популярная библиотека или рекомендуемый подход для асинхронных/событий программирования на базе в Swift3 (аналогично к RxJava2 в мире Android)

c) Как избежать помех между обратными вызовами/делегатами? Я имею в виду: предположить, что делегат для iBeacon запущен, а делегат для GPS все еще находится в процессе. Должен ли я синхронизировать свой код для обработки таких ситуаций или существует ли более простой/гарантированный способ обеспечения оперативной защиты всех делегатов?

ответ

0

При поступлении с RxJava было бы логичным выводом рассмотреть его пример Swift RxSwift. ReactiveCocoa - это еще одна функциональная реактивная библиотека, но вы можете столкнуться с какой-то запутанной терминологией при выходе из мира ReactiveX. Обе структуры предлагают привязки пользовательского интерфейса, обработку потоков и планирование.

Основы помогут вам в значительной степени организовать ввод из разных источников. Что вы, вероятно, смотреть на это сочетание потоков, таких как combineLatest: от ReactiveCocoa (rxmarbles, image source):

combien latest

Что касается вручную приоритизации вызовов делегата, вы, вероятно, сталкиваются с трудностями. Насколько я знаю, нет способа уменьшить частоту обратных вызовов из обнаружения маяка. В нормальном сценарии я не думаю, что это должно быть проблемой, которая должна вас затронуть, поскольку разные источники не должны блокировать/задерживать друг друга.

Смежные вопросы