Alfred
На самом деле это высказывание эквивалентно "я дебил"
Alex
𝔗𝔞𝔯𝔞𝔰
😀😀😀
𝔗𝔞𝔯𝔞𝔰
На самом деле это высказывание эквивалентно "я дебил"
Anonymous
Может человек пообщаться хотел, а вы его сразу в стэковерфлоу тычете
Alex
Во во
Alex
Скучно емае
Alex
😂
Anonymous
Или услышать от кого грустную историю как такое приложение не пустили в стор. Или, наоборот, историю успеха, о том как удалось обмануть эппл
Anonymous
С другой стороны, какой смысл в таком приложении?
Alex
Если это ссылка на личный кабинет то есть не писать кучу кода на swift
Alex
или ссылка на мессенджер
Alex
))))
Anonymous
Это, помнится, Майкрософт такой подход приветствовала, даже способствовала шаблонами какими-то. Но их понять можно. У них в сторе было и на данный момент хоть шаром покати
Alex
)))))
Anonymous
Anonymous
Как-то не серьезно
Alex
Да просто у нас на вебе есть мессенджер! И что бы не писать кучу кода )))) Просто ссылку сделать
Anonymous
Ну так дай ссылку пусть юзают в сафари
Anonymous
Причем здесь стор?
Anonymous
Для таких вещей есть маркетинг
Alex
Да эт понятно)))))) Мы просто сидим тут с пивом и рассуждаем вот и зашел спор прокатит или нет
Anonymous
Забейте и пейте дальше
Alex
))))Во во
Alex
Всем спасибо
Anonymous
Расти большой
Anonymous
не будь лапшой
Anonymous
ну вот, лапши захотелось в коробочке
Alex
Гайз, вапрос. Как правильно возвращаться из вызова асинхронных функций?
Есть к примеру в функции Alamofire.request(.....) {stuff}. Функция возвращает что-то из блока stuff. Как правильно возвращать? Присваивать weakSelf.something = somethingFromStuff?
Anonymous
вызывать блок, расположенный в классе, который не сдохнет после обработки запроса с присваиванием переменной в этот класс
Anonymous
ну блок который раскрыт в классе. Как колбэк
Alex
Слова понятны, смысл не очень. Пример покажешь?
Anonymous
ой
Anonymous
class Presenter {
var paws: String
func viewDidLoad() {
let meow = Meow()
meow.mrr(block : { (purr) in
paws = purr
})
}
}
class Meow {
func mrr(block: @escaping (input: String) -> Void) {
Alamofire.request("https://httpbin.org/get").responseJSON { response in
debugPrint(response)
if let json = response.result.value {
block(json["purr"] as! String)
}
}
}
Alex
Alex
Но спасибо, теперь я понял.
Anonymous
Выглядит как-то странно :) И вы все так делаете?
о, у меня там эти блоки оборачиваются в универсальные контейнеры, которые можно в функцию передавать любого типа, зато дают разные колбэки с разными параметрами. Но да, все через колбэки делают.
Anonymous
а то мало ли, вдруг там класс уже умрет.. Хотя нужен тогда strong self чтобы не умер
Anonymous
нууу в общем. Мне кажется это удобно, уже привычно
Alex
Alex
Anonymous
Сейчас бы замыкания ассоциировать с жаваскриптом
Anonymous
Anonymous
и вообще у нас трава зеленее и еще типы есть, вот
Anonymous
Anonymous
Повернись на 180 градусов и прочитай мое сообщение глазами, плиз
Anonymous
ну ладно, ты прав, извини(
Anonymous
а нет не прав!
Anonymous
Ну ты определись там
Alex
Сейчас бы замыкания ассоциировать с жаваскриптом
Ну как тебе сказать... синтаксически похожи в этом плане, но так как свифт строго типизированный, о сравнении с js где строку можно сравнить с функцией и речи не идет. Строгая типизация заставляет тебя поменьше говнокодить в этом направлении.
Anonymous
Anonymous
Alex
Alex
Хотя нет, в питоне я их вообще не использую.
Anonymous
А как он может умереть тогда? Нужен пример
тыкнул юзер в кнопу. А она не нажимается. "и черт с ней, с кнопой, подумал юзер". И он переходит на другой экран. И старый Presenter бах, умирает. А там какой-то запрос с каким-то колбэком исполняется. Как в космосе. Сам по себе. А потом он такой пытается в self что-то записать, бах и умирает. Ой. Наверное для этого и нужен weak self, точно :)
Anonymous
Ну так если weak не будет, то класс не умрет в любом случае, ибо ссылка хранится в замыкании
Anonymous
Ну да. Я про то, что если ему суждено умереть, то и хрен бы с ним
Anonymous
🤔
Anonymous
Значит не так и важно пользователю, что он так долго и безуспешно делал
Anonymous
Ну либо если все так важно - то блокировать ему ui. А делать retain цикл - это как-то не по-человечески
Anonymous
Вообще можно все в главном потоке делать, тогда у пользователя не будет выбора
Anonymous
Тогда крутелка крутиться не будет
Anonymous
Ну а зачем, главное, что она есть
Anonymous
Тогда пользователь испугается что телефон сломался
Anonymous
Надо же о пользователе заботиться
Anonymous
как считать размер ячейки в CollectionView?
Anonymous
хочу сделать размерами с CollectionView, но никак не могу попасть
D
Кто-нибудь решал кейс, когда одна таблица(1) на другой(2)? И у таблицы 2 не срабатывают методы делагата, так как она лежит на 1.
Anonymous
Alfred
D
D
Maxud
@denby, если ты говоришь что одна таблица лежит в ячейке другой, то это нормлаьный кейс и костыль тут не нужен. Если не работает, то проверь как ты настроил ячейку
D
Не в ячейке, а накладывается поверх второй таблицы
Maxud
тогда проблем вообще быть не должно
Maxud
а что костыль ты использовал то?