Paks
но я сейчас про такую форму обертки
Paks
через синглтон
Paks
когда это плохо и почему?
q210
иногда там {"result": ... , "response": ...} а иногда {"result": ... , "balance": ...} ?
Paks
иногда там {"result": ... , "response": ...} а иногда {"result": ... , "balance": ...} ?
ага) говорю же на сервере туфту отдают) клюю переодически, как поменяют удалю этот чек
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
статья, почитай её
Alfred
как в хттп хидеры положить что нибудь?
Paks
хз) гуглить надо)
Paks
о, он спрогрессом, фтыкнул
Alfred
POST:parameters:progress:success:failure: разве нет?
Paks
это метот либы
Paks
Easy
POST:parameters:progress:success:failure: разве нет?
[manager.requestSerializer setValue: self.LOL forHTTPHeaderField: @"myHeader"];
Paks
и там дальше 100500 таких коротких вызовов методов
Alfred
ок. как закешировать результат запроса?
Paks
[manager.requestSerializer setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
Paks
при инициализации)
q210
а ретраев там нет принципиально?
q210
или как там рейт-лимитинг встраивать?
Paks
походу тут все ставится
Paks
Paks
синглтон - это, AFHTTPSessionManager
Paks
одна из проблем пока-что, это если для каждого запроса свой набор параметров нужен)
Paks
я так понял?)
Paks
потому что они задаются при создании
Paks
хотя не)
Paks
при создании ток URL
Paks
все остальное мона менять
Alfred
[manager.requestSerializer setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
а если нужно кешировать только картинки?
Easy
SDWebImage это делает по умолчанию. Это если не хочешь сам писать
Alfred
секундочку. при чем здесь SDWebImage?
q210
для меня там проблема в том, что выкорчёвывать эту штуку из проекта будет долго и больно при надобности, замокать её толком не получится для тестов, менять её поведение в части обработки HTTP запросов кажется тоже тяжеловато. НО! Если ты в данном проекте не планируешь менять эту библиотеку на другую, уверен что не придётся делать те же ретраи, уверен в коде своего papi client'а настолько чтобы не писать unit test'ов - оставь так и не парься
Easy
секундочку. при чем здесь SDWebImage?
Картинки кеширует после загрузки он
Alfred
ты предлагаешь писать 10 разных сетевых стеков для разных ситуаций?
Alfred
ну или не писать а использовать.
Paks
ну АФНетворкинг не кеширует картинок полноценно
Paks
насколько я знаю, нужно юзать что-то доп, что бы они сохранялись
q210
мы весь вечер рассказывали про dependency injection который позволяет писать хороший поддерживаемый код. Если у тебя в данном месте код написан один раз и особо потом меняться не будет (т.е. не требует поддержки) - то и DI там тебе особо пользы не принесёт
Paks
http://blog.originate.com/blog/2014/02/20/afimagecache-vs-nsurlcache/
Paks
по крайней мере то, что касается запросов сетевых
Paks
а меняется все вокруг логики постоянно. то экраны, то их положение, то функции экранов и все в таком стиле
Paks
я поэтому про все это и спрашиваю. на практике я никакой пользы от всего этого не встречал, только в теории много всего читал. Вот и интересно, когда это приходит на помощь, в каких случаях это юзается и т.д. и чем мне может обернуться не использование всех этих канонов, кроме того, что когда-то по шапке за такое могут стучать, а я не буду понимать чего стучат)