Alfred
нет, в инициализатор как параметр сессия идет
Asylbek
С Id какое то извращение по мне)
q210
в проде так не пишу - это моё питоновое прошлое нашёптывает
q210
но у эппла в foundation так много где есть кстати
Paks
просто если в этом классе потом нужно заменить [NSUrlSession sharedSession] на что-то другое
Paks
я делаю контрл ф - финдр / реплейс
Paks
и в 1 кнопку все заменяю
Alfred
Stanislav
initWith имеется в виду
Stanislav
А туда уже NSURLSession
Stanislav
q210
потому что задание так поставили, или ты пишешь библиотеку которую непонятно кто захочет как использовать, или тестируешь свой класс и хочешь вместо реальной сессии использовать тестовую
Paks
тоесть вы всегда в коде в инициалзиаторе создаете
@property (weak, nonatomic) id session
@property (strong, nonatomic) ClassB *classB
- (instatype)initClassB:(ClassB)classB {
...
_classB = classB
_session = [NSUrlSession sharedSession]
return self
}
Paks
так?) это теперь депенденси инжекшн?
q210
всё ещё явная зависимость потому что в коде есть NSUrlSession класс
Alfred
@property (weak, nonatomic) id<MySession> session
- (instatype)initWithSession:(id<MySession>)session {
...
_session = session;
return self
}
q210
👆
Asylbek
Asylbek
И так практичнее
Paks
Paks
и в класе юзаю не [NSUrlSession sharedInstance]
Paks
а сразу нужный запрос делаю из моего класса?
q210
блоки здесь это Inversion of Control
Paks
и он тож синглтон но вызывается [MySession sharedsessin]loginUser...
q210
что вобщем тоже относится к техникам избавления от явных зависимостей
q210
но лучше тебе кажется теорию почитать
Paks
и в блоке возвращается ответ от сервера
q210
чем мы будем в 4 голоса в чате объяснять отрывками
q210
и решить, надо оно тебе или нет
Alfred
Paks
и в каждом классе инициализировать этот обьект где юзаю?
Alfred
можешь сделать один объект на всё приложение и прокидывать его
Paks
в аппделегате?
q210
btw, хорошая статья на тему "почему синглтоны - не ок": https://www.objc.io/issues/13-architecture/singletons/
Alfred
ну или di для бедных – зовешь синглтон в фабрике/конвиниенс инициализаторе
Paks
А если вместо синглтона юзать просто статический класс?
q210
они настолько удобны, что все и так ими пользуются где надо и не надо
Alfred
q210
лучше знать, когда их не стоит применять и почему
Paks
ну вот) опять же за всю практику с проблемаами от синглтонов не стыкался
Paks
поэтому читал много, но более удобной альтернативы не встречал написания
Paks
просто этот способ работы с сетью я видел когда-то у AFNetworking
Paks
в их гайдах
Paks
и как-то прижилось
Oleksii
так синглтон то и не должен содержать стейта так-то...
q210
э?
q210
рили?
q210
UIApplication с тобой не согласен
Alfred
скорее всего почти любой синглтон с тобой не согласен
Alfred
если нет стейта – юзй сишную pure функцию
Paks
стейт - это состояние?
q210
q210
потому они от продакшн кода довольно резко отличаются местами
q210
(но не поймите меня неправильно - читаемость в продакшн коде важна тоже)
Alfred
afnetworking кажется вообще не то место куда надо идти за хорошим кодом
Paks
а где о работе с афнетворк лучше напишут чем у афнетворк?)
Paks
вот так там был вариант юзания их манагера
Paks
Paks
Paks
кажется все аккуратно, красиво и понятно
Alfred
для бэби кодинга сгодится, да
Paks
Вот основная пост функция, которая делает запрос от всех методов
Paks
а в каких случаях это плохо?
Paks
и так не стоит юзать?
Alfred
Если в тему код ревью, я например несколько минут вдуплял почему написано if (success) {, оказалось что это колбэк.
Paks
угу, оно крешится
Paks
если nil
Paks
в другом классе в вызове
Alfred
Понятно что крешится, название success мне не понятно.
Alfred
successCallback?
q210
не проверяешь явно что в ответе 2 и сразу чекаешь баланс
q210
ты уверен что потом у тебя не будет 3 ?
q210
также - @1 ? magic numbers
Paks
та там на сервере костыл, исправят удалю весь if, его не должно быть. там эта проверка сугубо под 1 запрос, бо он не такой как все
Paks
никак не поменяют
q210
да и API у тебя... эээ
Paks
:) да, руки не дойдут все по феншую