Paks
но я сейчас про такую форму обертки
Paks
через синглтон
Paks
когда это плохо и почему?
q210
иногда там {"result": ... , "response": ...} а иногда {"result": ... , "balance": ...} ?
Paks
Paks
должно быть кругом result... {response
Paks
и будет без response balance :)
Paks
гы) нашел баг) пок апереписывал как должно быть
q210
я пока не вижу - где там синглтон?
Alfred
PApiClientGeneral – синглтон?
q210
да не, не должен быть
q210
там инициализватор с url же
Paks
ой
Paks
Paks
вот, генерал то просто родительский
Paks
q210
papi client =)
Paks
:)
q210
но ок, допустим
q210
ты его сделал, он работает
q210
вероятно умеет авторизоваться в API и хранить сессию / токен
q210
а теперь прикинь, ты решил что в твоём приложении клиент должен уметь разлогиниться
q210
и залогиниться под другим акком
Paks
нет токенов)
Paks
но да, такое в других проектах делал
q210
вот тут ты попадаешь - придётся писать код, который твой неубиваемый синглтон будет чистить от стейта
q210
или убивать
q210
в статье https://www.objc.io/issues/13-architecture/singletons/
q210
именно такой случай и описан
Paks
нуу, почему? я в классе, который делает логаут
Paks
чищу
Paks
а не в синглоте
Paks
от синглтона я ток получаю: успешно разлогинился или нет
q210
а мог бы не чистить
q210
это лишний код
q210
лишний код - источник лишних багов
Paks
а как?
Alfred
А еще можешь сказать, что лежит в POST:parameters:progress:success:failure:
Paks
сессию же нужно удалить
q210
статья, почитай её
Paks
Alfred
как в хттп хидеры положить что нибудь?
Paks
хз) гуглить надо)
Alfred
Paks
о, он спрогрессом, фтыкнул
Alfred
POST:parameters:progress:success:failure: разве нет?
Paks
это метот либы
Paks
Paks
и там дальше 100500 таких коротких вызовов методов
Alfred
ок. как закешировать результат запроса?
Paks
[manager.requestSerializer setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
Alfred
Paks
при инициализации)
q210
а ретраев там нет принципиально?
q210
или как там рейт-лимитинг встраивать?
Paks
походу тут все ставится
Paks
Paks
синглтон - это, AFHTTPSessionManager
Paks
одна из проблем пока-что, это если для каждого запроса свой набор параметров нужен)
Paks
я так понял?)
Paks
потому что они задаются при создании
Paks
хотя не)
Paks
при создании ток URL
Paks
все остальное мона менять
Alfred
Easy
SDWebImage это делает по умолчанию. Это если не хочешь сам писать
Alfred
секундочку. при чем здесь SDWebImage?
q210
для меня там проблема в том, что выкорчёвывать эту штуку из проекта будет долго и больно при надобности, замокать её толком не получится для тестов, менять её поведение в части обработки HTTP запросов кажется тоже тяжеловато.
НО!
Если ты в данном проекте не планируешь менять эту библиотеку на другую, уверен что не придётся делать те же ретраи, уверен в коде своего papi client'а настолько чтобы не писать unit test'ов - оставь так и не парься
Easy
Alfred
ты предлагаешь писать 10 разных сетевых стеков для разных ситуаций?
Alfred
ну или не писать а использовать.
Paks
ну АФНетворкинг не кеширует картинок полноценно
Paks
насколько я знаю, нужно юзать что-то доп, что бы они сохранялись
q210
мы весь вечер рассказывали про dependency injection который позволяет писать хороший поддерживаемый код. Если у тебя в данном месте код написан один раз и особо потом меняться не будет (т.е. не требует поддержки) - то и DI там тебе особо пользы не принесёт
Paks
http://blog.originate.com/blog/2014/02/20/afimagecache-vs-nsurlcache/
Paks
Paks
по крайней мере то, что касается запросов сетевых
Paks
а меняется все вокруг логики постоянно. то экраны, то их положение, то функции экранов и все в таком стиле
Paks
я поэтому про все это и спрашиваю. на практике я никакой пользы от всего этого не встречал, только в теории много всего читал. Вот и интересно, когда это приходит на помощь, в каких случаях это юзается и т.д. и чем мне может обернуться не использование всех этих канонов, кроме того, что когда-то по шапке за такое могут стучать, а я не буду понимать чего стучат)