Тёмный

02. Swift как язык программирования - Денис Малых 

Yandex for Developers
Подписаться 66 тыс.
Просмотров 9 тыс.
50% 1

На этой лекции мы познакомимся с языком Swift, обсудим его базовые и специфические конструкции. После просмотра и проработки этого материала вы сможете разрабатывать на Swift небольшие приложения для iOS.

Опубликовано:

 

15 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 12   
@romanbrazhnikov7635
@romanbrazhnikov7635 2 года назад
Приятно слушать подготовленного докладчика, спасибо!
@MrVintarb
@MrVintarb 2 года назад
1) 13:45 ничего не упразднено. Оператор называется stride for i in stride(from: 10, to: 0, by: -1) { print(i) } Распечатает числа от 10 до 1 включительно 2) class модификатор может работать только на вычислимых свойствах и функциях. Ещё модификатор class может быть объявлен только у классов. А static и у структур и у классов. 3) В convenience init нельзя дёргать родительский super.init. Обязательно надо дёргать designated init своего класс. (Это и логично. Представьте, что у наследуемого класса объявляется дополнительное хранимое свойство. Если бы можно было дёргать super.init, то это свойство оставалось бы не инициализированным, то есть там не понятно, что лежало бы). 4) 40:16 COW(Copy-on-write) не для всех структур работает, а только для тех, которым прописали такой поведение. Из стандартной библиотеки COW реализован у коллекций. Если вы пишете свою стуктуру, то у неё нет никакого COW. Чтобы реализовать COW для своей стукрутуры - смотрите доку на сайте apple "isKnownUniquelyReferenced" 5) 49:02 "Самый простой цикл состоит из двух объектов" - не правда, самый просто reference cycle состоит из одного объекта. Вот пример: class RecursiveRef { var ref: RecursiveRef? deinit { print("deinit") // Никогда не распечатается, т.к. объект держит сам себя (смотри функцию main). Если сделаем "var ref: RecursiveRef?", то тогда распечатается. } } func main() { let ref = RecursiveRef() ref.ref = ref } main() 6) 50:25 Счётчиков ссылок 3 (strong, unowned, weak). Изначально объект создаётся без weak ссылок, то есть у него только strong и unowned (причём лежат они в 64 битной целом числе). Когда на объект начинает указывать weak ссылка, в рантайме, создаётся side table, в которой уже есть 3 вида счётчиков (strong, unowned, weak), значения счётчиков strong и unowend копируются в side-table, а та область памяти, которая указывала на strong + unowned, начинает указаывать на side-table. Подробнее смотри в гугле "swift/RefCount.h" Release у пропертей нашего объекта и deinit нашего объекта, вызвается, когда счётчик strong ссылок становится равен 0. Низкоуровневый C++ класс HeapObject нашего объекта (по-сути это c++ класс обёртка над любым swift классом), уничтожается только тогда, когда счётчик unowned ссылок == 0.
@mak_whisk
@mak_whisk 2 года назад
Спасибо большое
@alexanderkomarov5079
@alexanderkomarov5079 2 года назад
В п.1 явно имелся в виду "классический" сишный цикл. for int i = 0; i
@MrVintarb
@MrVintarb 2 года назад
@@alexanderkomarov5079 В таком случае да, но раз уж есть stride, то в любом случае, стоило про него упомянуть.
@МаратСаляхетдинов
Было бы круто иметь пример выполнения ДЗ. Спасибо за видео !
@sovrinfo
@sovrinfo 2 года назад
Спасибо за видео.
@Tsugur
@Tsugur Год назад
А каким образом в лекции, где только разжевывали как работает let и var, внезапно ДЗ на парс JSON’ов через extension для FileCache?) Я че-т офигел от такого скачка)
@mak_whisk
@mak_whisk 2 года назад
Спасибо
@user-kr2uo1ue4h
@user-kr2uo1ue4h 2 года назад
38:58 Не является ли это утверждение слишком большим упрощением? Ладно что компилятор может убрать аллокацию чего бы то ни было. Так же комплятор может разместить класс на стеке, если он не выйдет за пределы метода. Но вот структуру, являющуюся полем класса или захваченной замыканием, просто невозможно разместить на стеке
@MrVintarb
@MrVintarb 2 года назад
Если структура, лежит в классе, который компилятор оптимизировал, положив на стек. В таком случае может.
@fen-siz
@fen-siz 3 дня назад
про static и class какой-то бред рассказали
Далее
06. Concurrency - Денис Малых
1:37:09
Просмотров 8 тыс.
World’s Tallest Man VS Shortest Woman!
15:07
Просмотров 13 млн
Doors Harpy Hare (Doors 2 Animation)
00:16
Просмотров 424 тыс.
Каха и жена (недопонимание)
00:37
07. Networking - Тимофей Сурков
1:35:25
Просмотров 5 тыс.