Size: a a a

iOS Developers — русскоговорящее сообщество

2019 December 06

РЛ

Руслан Лутфуллин in iOS Developers — русскоговорящее сообщество
Если у вас внутри операций асинхронные задачи, то машина состояний ломается. Нужно самому следить за ходом вашей асинхронной задачи. Сейчас я приведу простой пример реализации для такого типа задач. Минуту.
источник

АА

Алексей Артемьев in iOS Developers — русскоговорящее сообщество
Руслан Лутфуллин
Если у вас внутри операций асинхронные задачи, то машина состояний ломается. Нужно самому следить за ходом вашей асинхронной задачи. Сейчас я приведу простой пример реализации для такого типа задач. Минуту.
Вот это сервис!
источник

АА

Алексей Артемьев in iOS Developers — русскоговорящее сообщество
Прям как алиса :)
источник

РЛ

Руслан Лутфуллин in iOS Developers — русскоговорящее сообщество
Алексей Артемьев
Вот это сервис!
Ну это важная штука. Я не могу мимо пройти :)
источник

АА

Алексей Артемьев in iOS Developers — русскоговорящее сообщество
Руслан Лутфуллин
Ну это важная штука. Я не могу мимо пройти :)
:) красавчик!
источник

DZ

Dmitriy Zawadskiy in iOS Developers — русскоговорящее сообщество
Руслан Лутфуллин
всю заботу вам нужно брать на себя
+, вот кстати интересно по этому поводу. На хабре отличная статья на тему операций, написано то же и самое, но, насколько помню, не было рекомендаций что делать в таких случаях
источник

РЛ

Руслан Лутфуллин in iOS Developers — русскоговорящее сообщество
источник

РЛ

Руслан Лутфуллин in iOS Developers — русскоговорящее сообщество
Это самая простая реализация своей машины состояний для асинхронных операций внутри
источник

РЛ

Руслан Лутфуллин in iOS Developers — русскоговорящее сообщество
Так как в таком случае, state операции не может отследить завершение операции в случае метода main()
источник

РЛ

Руслан Лутфуллин in iOS Developers — русскоговорящее сообщество
потому-что для обычной задачи, конец метода main означет конец операции
источник

РЛ

Руслан Лутфуллин in iOS Developers — русскоговорящее сообщество
для асихронных такое поведение нужно предотвратить, путём введения своей машины состояний и переопределения основых св-в, что в примере.

Ну и все изменения подхватываются операцией только через KVO.

Сейчас покажу как такой класс использовать.
источник

РЛ

Руслан Лутфуллин in iOS Developers — русскоговорящее сообщество
источник

DZ

Dmitriy Zawadskiy in iOS Developers — русскоговорящее сообщество
Украду, благодарю
источник

DY

Dmitriy Yurchenko in iOS Developers — русскоговорящее сообщество
Нужно ли в наследнике самим устанавливать state в isFinished, в случае, если операция отменена? Ведь cancel() уже это сделал
источник

РЛ

Руслан Лутфуллин in iOS Developers — русскоговорящее сообщество
Вообще у Apple был отличный пример на WWDC на тему операций - Advanced Operations.

Там был немного более сложный подход, но с куда более большим функционалом.

Если нужно я могу выложить свою реализацию этого подхода.
источник

РЛ

Руслан Лутфуллин in iOS Developers — русскоговорящее сообщество
В проде пока не отказывала.
источник

РЛ

Руслан Лутфуллин in iOS Developers — русскоговорящее сообщество
Dmitriy Yurchenko
Нужно ли в наследнике самим устанавливать state в isFinished, в случае, если операция отменена? Ведь cancel() уже это сделал
Сам cancel только выставляет флаг
источник

DY

Dmitriy Yurchenko in iOS Developers — русскоговорящее сообщество
Если не трудно)
источник

РЛ

Руслан Лутфуллин in iOS Developers — русскоговорящее сообщество
А отмены своей работы вы должны всё так же делать сами
источник

РЛ

Руслан Лутфуллин in iOS Developers — русскоговорящее сообщество
Ибо нужно проверять этот флаг, перед началом какой-то работы и завершать, если операция отменена.
источник