Size: a a a

2021 March 04

🅰Б

🅰️лександр Б.... in SwiftBook
Ivan Yatsenko
Всем привет, подскажите пожалуйста как округлить дату до целого числа
let calculateDateOfVacation: Int = Int((secondDateDP.date).timeIntervalSince(firstDateDP.date) / 60 / 60 / 24)
           print(calculateDateOfVacation)

сейчас не считае сегодня и завтра выдает = 0
let calculateDateOfVacation = Calendar.current.date(byAdding: .day, value: 1, to: Date())
источник

YP

Yuriy P in SwiftBook
Спасибо! Каст Error в SKError решил все вопросы, странно что сам не додумался(
источник

ДО

Денис Овчар... in SwiftBook
Доброе. А кто-нибудь когда-нибудь боролся с тем, что в Hero при транзишене лейбла матчингом из за разной ширины и разного количества строк все криво анимируется ? Ибо снапшот не подходит... Я бы ожидал, что все будет норм если просто кроссфэйд сделать, но я не понимаю как его заставить кроссфейдиться, хотя ожидал бы что это чуть ли не дефолт
источник

IF

Ilia Fedorov in SwiftBook
13
Во-первых, спасибо за развернутое объяснение (хоть и не я спрашивал:))
Во-вторых что гуглить, чтоб подробнее почитать, про тему с тем, что контент многих базовых типов храниться в куче?
На WWDC кстати есть много довольно глубоких сессий. Я в какой-то момент начал смотреть и теперь не могу остановиться, архивные тоже смотрю

А кроме и посоветовать особо нечего из прям доступного.
Совсем уж глубокие знания с опытом накапливаются, с опытом изучения и работы с другими ЯП в том числе. Курсы по computer science (на тех же coursera, stepik) помогают самостоятельно доходить до выводом о том, как оно под капотом работает, можно и в исходники не смотреть. Еще можно на ютуб поискать записи лекций и семинаров с МФТИ ФПМИ (там очень фундаментально, но эти знания не сразу матчатся на конкретную платформу iOS и Swift)

Еще можно исходный код свифта поставить себе проектом в xcode и хотя бы иногда в него заглядывать -поглядывать
источник

1

13 in SwiftBook
Ilia Fedorov
На WWDC кстати есть много довольно глубоких сессий. Я в какой-то момент начал смотреть и теперь не могу остановиться, архивные тоже смотрю

А кроме и посоветовать особо нечего из прям доступного.
Совсем уж глубокие знания с опытом накапливаются, с опытом изучения и работы с другими ЯП в том числе. Курсы по computer science (на тех же coursera, stepik) помогают самостоятельно доходить до выводом о том, как оно под капотом работает, можно и в исходники не смотреть. Еще можно на ютуб поискать записи лекций и семинаров с МФТИ ФПМИ (там очень фундаментально, но эти знания не сразу матчатся на конкретную платформу iOS и Swift)

Еще можно исходный код свифта поставить себе проектом в xcode и хотя бы иногда в него заглядывать -поглядывать
Спасибо за советы.
источник

MM

Marty McFly in SwiftBook
Ilia Fedorov
не то, чтобы можно думать о классах или структурах в категориях "лучше" или "хуже". Они просто разные и каждый тип хорош для своей задачи

Еще можно добавить такое понятие как value-type семантика (гуглится)
- можно управлять мутабельностью через var/let,
- а значит можно получить гарантии, что значение не будет изменено из вне (ценное свойство для структур с данными)

Храняться еще структуры (value-type) на стеке, а классы (reference type) в куче. Получение значения и стека работает быстрей, потому что в стеке все значения рядышком в памяти храняться (+ оптимизации на ядре), а в куче они рандомно в памяти разбрасоны и процессор не может применить никакие оптимизация для скорого доступа к объектам в куче.

Еще можно про скорость поговорить. При работе с классами Swift'у приходиться менеджить жизненый цикл value (считать ссылки на объект, деструктить его, если reference counter стал равен 0) и занимать выделением памяти.
- и вроде операция инкремента счетчика ссылов не супер затратная, но их прям оч много надо делать (гуглить reference counting overhead и retain/release overhead)
- к тому же оперцию подсчета ссылок на объект надо синкронизировать между разными потоками, что делает ее еще более медленной

И еще про скорость. Есть такая тема Method Dispatch (лучше найти сессию на WWDC). Это тема про то, как определить какую реализацию метода вообще надо выполнить при вызове функции Foo(). У класса то есть наследование и функции можно переопределять. И если у тебя массив cars: [Vehicle], но в нем лежат лежат объекты классов Bus, Plane, Bicycle, то когда ты будешь в цикле по элементам массива пробегать и вызывать функцию Foo() у каждого (которая может переопределена, а может и нет), то по факту Свифт не знает какую реализацию выполнить. И ему приходиться в рантайме определять, что нужно выполнить — а это долго. Со структура проще — нет наследования, нет и переопределения (если это не протоколы конечно), а значит реализация Foo() находится еще в compile time и в рантайме время на поиск реализации тратить не надо.

И у классов еще, есть такое понятие – identity (часть reference type семантики). Т.е. объекты классов можно сравнить на равенство по указателю (адресу в памяти) -> если адрес совпадает, то эти 2 переменные равны (т.к. это просто 2 разные ссылки, которые указывают на один и тот же объект)

И переменные классов можно менять просто, типа classObject.value = 2. Swift идет по ссылке в кучу и меняет значение. Это свойсто Apple именует indirect storage (еще часть reference type семантики). Со структурой по другому — если меняешь значение у проперти, то создается новая структура и инициализируется сразу с ообновленным значением проперти, и после создания новая структура присваивается в твою переменную.
Звучит наверно долго по времени? Это ж надо копировать, инициализировать....
Но не совсем уж и долго. И чтобы понять почему не долго, надо рассмотреть Array например или String. И Array и String структуры, но вот контент (элементы массива и char'ы соответственно) храняться в куче. Поэтому когда создается копия Array, то под капотом Swift только создает небольшую оболочку для новой структуры Array/String/Data, а контент так и остается в куче лежать и на него новой копии структуры просто ссылка дается
P.s. такая комбинация получается value type и reference type, где от каждого взято только самое лучше))
Ооо многого не знал) зачем смотреть WWDC) ты уже объяснил вкратце)) спасибо, было полезно читать. 👍
источник

C

ChatKeeperBot in SwiftBook
👋 Камиль, рады приветствовать тебя в «SwiftBook»

В этой группе мы обсуждаем Xcode, Swift. А также другие инструменты для разработчиков.😉

Пожалуйста ознакомьтесь с правилами группы
источник
2021 March 05

AK

Aleksandr Krainev in SwiftBook
занятие это сколько по времени? 45 минут?
источник

I

Ivan in SwiftBook
Ребята, буду очень рад если поможете.
Нужно сделать вот такой бар с категориями поиска, появляющийся при скролле вверх, уезжающий при скролле вниз.
источник

I

Ivan in SwiftBook
источник

I

Ivan in SwiftBook
Попытался реализовать через scrollViewWillEndDragging и изменение хайт констрейнта вьюхи под баром, работает не как хочется.
(нужно сделать на UIKit)
источник

I

Ivan in SwiftBook
Any ideas are appreciated
источник

a

andreych in SwiftBook
Ivan
Попытался реализовать через scrollViewWillEndDragging и изменение хайт констрейнта вьюхи под баром, работает не как хочется.
(нужно сделать на UIKit)
кажется сделано через scrollviewdidscroll, узнаешь offset у основной таблицы и поднимаешь /опускаешь констрейнт верхнего бара
источник

ИП

Иван Покасов... in SwiftBook
А можно ли как-то задать кнопке, чтобы она TextEditor поднимала наверх? Ну пишет человек текст, а по кнопке его возвращают к началу
источник

C

ChatKeeperBot in SwiftBook
👋 Rustem Kz, рады приветствовать тебя в «SwiftBook»

В этой группе мы обсуждаем Xcode, Swift. А также другие инструменты для разработчиков.😉

Пожалуйста ознакомьтесь с правилами группы
источник

SS

Serov Stas in SwiftBook
Иван Покасов
А можно ли как-то задать кнопке, чтобы она TextEditor поднимала наверх? Ну пишет человек текст, а по кнопке его возвращают к началу
Можно
источник

ИП

Иван Покасов... in SwiftBook
Serov Stas
Можно
А как это сделать?
источник

SS

Serov Stas in SwiftBook
Иван Покасов
А как это сделать?
Как то так, если вы об этом...
let newPosition = textField.beginningOfDocument
textField.selectedTextRange = textField.textRange(from: newPosition, to: newPosition)
источник

L

LavTeam in SwiftBook
Добрый день!
Не подскажите, как можно сделать автозаполнение поля из Пуша?

Одноразовый код приходит не в смс/, а в пуше
источник

В

Василий in SwiftBook
обрабатываешь контент пуша и все
источник