SwiftyGroup @swiftynew Channel on Telegram

SwiftyGroup

@swiftynew


Собираю единомышленников для совместного изучения Swift, подготовки к собеседованиям и прокачивания скилов:)

Чат группы:
https://t.me/swiftygroup
@swiftygroup

Админ:
@VladimirBuik

SwiftyGroup (Russian)

SwiftyGroup - это канал, который собирает единомышленников для совместного изучения языка программирования Swift, подготовки к собеседованиям и повышения профессиональных навыков. Этот канал предлагает участникам возможность общаться, обмениваться опытом и знаниями, а также получать поддержку и мотивацию для дальнейшего развития. Администратором канала является @VladimirBuik.

Если вы хотите стать частью активного сообщества, где вы сможете общаться с единомышленниками, задавать вопросы и улучшать свои навыки в разработке на Swift, то канал SwiftyGroup - отличное место для вас. Присоединяйтесь к нам уже сейчас и начните свой путь к профессиональному успеху! Чат группы: https://t.me/swiftygroup @swiftygroup

SwiftyGroup

31 Dec, 15:12


Друзья, всех с наступающим Новым годом! 🎄Желаю вам творческих успехов и высокой salary💸, всех обнял!❤️)

SwiftyGroup

26 Dec, 10:38


Привет! пять дней до НГ и пять самых полезных материалов за 2024 год:
5️⃣https://t.me/swiftynew/297 25
4️⃣https://t.me/swiftynew/258 27
3️⃣https://t.me/swiftynew/289 30
2️⃣https://t.me/swiftynew/381 36
1️⃣ https://t.me/swiftynew/215 37

SwiftyGroup

25 Dec, 09:16


Всем привет👋 подводим итоги уходящего года, и вот вам пятерка лучших постов за 2024 год:
5️⃣https://t.me/swiftynew/287 21
4️⃣https://t.me/swiftynew/198 23
3️⃣https://t.me/swiftynew/214 25
2️⃣https://t.me/swiftynew/426 25
1️⃣https://t.me/swiftynew/257 27

Спасибо за ваши реакции❤️)

SwiftyGroup

20 Dec, 09:04


#квиз

SwiftyGroup

19 Dec, 09:38


Друзья, в честь нового года я запускаю скидку 25% на подписку на мой Boosty! Это ваш шанс сделать шаг к новым знаниям и успехам в iOS-разработке.

Что вас ждет:
🔹 Прокачка soft и hard skills для уверенного выступления на собеседованиях.
🔹 Переводы официальной документации Swift и популярных статей.
🔹 Роадмапы для начинающих разработчиков с материалами, которые помогут легко войти в профессию.
🔹 Книги для сеньоров – собраны и доступны для скачивания на жестком диске.
🔹 Реальные вопросы и ответы с собеседований.
🔹 Записи реальных собеседований для изучения процессов найма и подготовки.

Скидка действует только до 15.01.2025!

💡 Успейте подписаться: https://boosty.to/buik

Начните 2025 год с мощного рывка в развитии! 🚀

SwiftyGroup

18 Dec, 08:56


подробнее:
https://habr.com/ru/companies/skyeng/articles/591423/

#вопросы

SwiftyGroup

16 Dec, 07:58


Добро пожаловать в мир Swift от Дена!

Хочешь быть в курсе самых свежих новостей, полезных советов и уникального контента? Тогда наш канал — именно то, что тебе нужно!

Что ты найдёшь в нашем канале:

Полезные статьи и новости из мира технологий и IT.
Уникальные видеоуроки и гайды по программированию.
Обсуждения актуальных тем с нашими подписчиками.
Развлекательный контент, который поможет расслабиться и отдохнуть!

Присоединись к нашему дружному сообществу и будь на шаг впереди! Подписывайся на Swift от Дена и открывай новые горизонты вместе с нами!

Не упустите шанс стать частью нашей команды!

SwiftyGroup

13 Dec, 10:23


#квиз

SwiftyGroup

12 Dec, 07:52


Optional в Swift
#вопросы

SwiftyGroup

06 Dec, 09:48


Всем привет, видео стрима уже на бусти🏴‍☠️ открыто для просмотра, кому интересно трудоустройство в т-банк присылайте резюме мне в личку @VladimirBuik, помогу)

SwiftyGroup

04 Dec, 07:30


подробнее:
https://elamir.medium.com/mastering-urlsession-in-swift-a-comprehensive-guide-d3a3aa740f6e
#квиз

SwiftyGroup

29 Nov, 12:38


Всем привет, у кого остались вопросы по этой теме я перевел эту статью(https://www.jessesquires.com/blog/2018/06/10/why-optional-swift-closures-are-escaping/) на русский язык и выложил на бусти🏴‍☠️

SwiftyGroup

29 Nov, 08:32


#квиз

SwiftyGroup

27 Nov, 08:37


Опциональные замыкания
Подробнее:
https://www.jessesquires.com/blog/2018/06/10/why-optional-swift-closures-are-escaping/

https://docs.swift.org/swift-book/LanguageGuide/Closures.html

https://www.swiftbysundell.com/articles/capturing-objects-in-swift-closures/

#вопросы

SwiftyGroup

22 Nov, 07:48


#квиз

SwiftyGroup

21 Nov, 14:10


Всем привет
Сегодня было много репостов пдфок с вопросами, просто хочу напомнить что в закрытом Ноушене есть гораздо больше(и не только пдфок), попасть туда можно через бусти🏴‍☠️, понятное дело там скидка 50%💳. Думайте!

SwiftyGroup

21 Nov, 07:55


снова делюсь тем, что гуляет по интернетам

SwiftyGroup

20 Nov, 07:47


протокол Hashable

подробнее:
https://habr.com/ru/articles/724376/
очень подробно:
https://www.youtube.com/watch?v=mqQiXXs_as4

#вопросы

SwiftyGroup

19 Nov, 16:26


Прошу на стрим)
https://telemost.yandex.ru/j/50731779375314

SwiftyGroup

19 Nov, 15:39


Всем привет🚬

Уже меньше чем через час жду вас всех на стриме (ссылку скину на телемост за 5 минут) , готовьте ваши вопросы и заходите пожалуйста

SwiftyGroup

18 Nov, 12:20


📢 Завтра, 19 ноября (вторник) в 19:30 по московскому времени (UTC+3) состоится наш стрим:

🌟 Что вас ждет на стриме:

Разбор резюме наших подписчиков вместе с Евгенией Остроумовой, менеджером по найму мобильных разработчиков в Т-Банке. Получите ценные советы по улучшению вашего резюме и прохождению скрининга.

Обсуждение рынка найма в сфере iOS-разработки: актуальные тенденции, сложности и способы выделиться среди соискателей.

Лайфхаки и принципы успеха от Дениса, iOS-разработчика, который успешно устроился на работу в 2024 году. Узнайте, как преодолеть барьеры найма и повысить свои шансы на трудоустройство.

📝 Ещё не поздно прислать свое резюме для разбора!

Прикрепите его в комментариях к этому посту.
Или отправьте на почту: [email protected]

Не упустите возможность получить обратную связь от профессионалов и задать интересующие вас вопросы!

До встречи!

SwiftyGroup

18 Nov, 07:11


Всем привет!🚬
Анализ вывода:

1) Блок main.async ставит задачу на асинхронное выполнение в очередь main. Первое, что происходит, — это вывод "1".
2) Затем внутри этого блока main.async вызывается background.sync, который выполняется синхронно. Это означает, что очередь main будет ждать завершения задачи в очереди background, прежде чем продолжить.
3) Внутри background.sync вызывается sleep(1), что приостанавливает выполнение на 1 секунду, после чего выводится "2".
4) После вывода "2" блок main.async снова вызывает main.async, который ставит print("3") на асинхронное выполнение в очередь main.
5) Наконец, print("4") выполняется в конце программы, вне всех очередей.

SwiftyGroup

15 Nov, 11:25


Привет, ребята из @swiftynew! ✌️

На связи международное сообщество мобильных разработчиков - Coffee&Code.


Оффлайн встречи мобильных разработчиков в формате дружеской беседы на этих выходных.

Мероприятия совершенно бесплатны,
ждём всех желающих, обсудить разработку, задать вопросы, поделиться опытом и знаниями.

🌆Города в которых пройдут встречи:

🤖 Android:

📍СПИСОК ГОРОДОВ

📱 Mobile:

📍СПИСОК ГОРОДОВ

🍏 iOS:

📍СПИСОК ГОРОДОВ

SwiftyGroup

15 Nov, 07:45


#квиз

SwiftyGroup

13 Nov, 09:53


Какие принципы SOLID нарушаются в UIKit?

Подробнее:
ссылки на статьи в комментариях🕵️‍♂️

#вопросы

SwiftyGroup

12 Nov, 08:38


SwiftyGroup pinned «🚬 Дружеское напоминание: 📅 19 ноября (вторник) в 19:30 по московскому времени (UTC+3) приглашаем вас на стрим на тему: "Как дойти до технического собеседования" 🌟 Представляем второго гостя: Денис — iOS-разработчик, который успешно преодолел барьеры найма…»

SwiftyGroup

12 Nov, 08:37


🚬 Дружеское напоминание:

📅 19 ноября (вторник) в 19:30 по московскому времени (UTC+3) приглашаем вас на стрим на тему:

"Как дойти до технического собеседования"

🌟 Представляем второго гостя:

Денис — iOS-разработчик, который успешно преодолел барьеры найма и устроился на работу в 2024 году. В условиях высокой конкуренции на рынке труда, его опыт особенно ценен.

В своем выступлении Денис поделится своими лайфхаками и принципами, которые помогли ему добиться успеха.

📝Основные принципы Дениса:

-Скрывайте личные данные, которые могут привести к предвзятости. Если вам больше 38 лет, рассмотрите возможность не указывать возраст в резюме, чтобы избежать потенциальной возрастной дискриминации.
-Фокусируйтесь на релевантном опыте. Уберите из резюме все позиции, кроме последних одного-двух мест работы по конкретной специальности. Краткое резюме (не более 1 страницы А4) привлекает больше внимания у HR-специалистов.
-Избегайте указания слишком коротких или слишком длительных периодов работы. Места работы менее года или более четырех лет могут вызывать дополнительные вопросы.
-Используйте профессиональное фото. Хорошая фотография может создать положительное первое впечатление.
-Создайте отдельное портфолио. Разместите его на таких платформах, как GitHub, и отправляйте вместе с резюме. Ссылка на GitHub добавляет доверия к вашим профессиональным навыкам.
-Расширьте поиск вакансий. Не ограничивайтесь только hh.ru; подготовьте качественное резюме и отправляйте его на разные платформы и напрямую работодателям.
-Не обращайте внимания на отказы. Продолжайте двигаться вперед — настойчивость приносит результаты.
-Оценивайте тестовые задания критически. Не соглашайтесь на задания, выполнение которых занимает более 2 часов. Лучше иметь готовые примеры работ на GitHub и предлагать их для ознакомления.
-Пишите сопроводительные письма. Они часто привлекают больше внимания HR-специалистов, чем само резюме.
-Доверяйте своей интуиции. Если у вас возникают сомнения относительно работодателя, стоит прислушаться к своему внутреннему голосу.

🤓Эти и другие советы мы подробно обсудим с Денисом на стриме. Не упустите возможность получить ценные рекомендации из первых рук!

SwiftyGroup

11 Nov, 07:31


Для a все просто: переменная инициализирована значением .zero, которое равно 0, поэтому условное присваивание a? = 10 успешно срабатывает и a получает значение 10.

Для b, так как переменная инициализирована как nil, при попытке присвоить значение с условным оператором b? = 10 сеттер просто не вызывается, так как переменная b не существует (она nil). Это эквивалентно вызову метода b?.set(newValue: 10), который не срабатывает, если объект b равен nil.

SwiftyGroup

08 Nov, 06:55


Коллеги, если процент верных ответов будет больше остальных, сокращу рекламу Бусти🏴‍☠️ в два раза(1 реклама в две недели), постарайтесь пожалуйста!😧
#квиз

SwiftyGroup

07 Nov, 11:28


Друзья, моему Бусти 🏴‍☠️ исполнился месяц! 🎉 В честь этого я дарю скидку 50% на подписку.

Подписавшись на мой Бусти, вы получаете доступ к моему закрытому Ноушену, который обновляется почти каждый день! 📚 (Скриншот изменений прилагается.)

Чтобы получить доступ к закрытому Ноушену, просто пришлите свой адрес электронной почты в ответном сообщении, и я вас добавлю.

Подписывайтесь здесь: https://boosty.to/buik

Спасибо, что вы помогаете выпустить книгу, для меня это правда важно. ❤️

SwiftyGroup

07 Nov, 06:58


SwiftyGroup pinned «Всем привет👋 📅 19 ноября(Вторник) в вечернее время по Москве (точное время сообщим позже) состоится стрим на тему: "Как дойти до технического собеседования" 🌟 Первый приглашенный гость: Евгения Остроумова — менеджер по найму мобильных разработчиков в Т…»

SwiftyGroup

07 Nov, 06:53


Всем привет👋

📅 19 ноября(Вторник) в вечернее время по Москве (точное время сообщим позже) состоится стрим на тему:

"Как дойти до технического собеседования"

🌟 Первый приглашенный гость:

Евгения Остроумова — менеджер по найму мобильных разработчиков в Т-Банке.

Евгения готова:

- Разобрать ваши резюме в прямом эфире.
- Дать ценные советы по прохождению скрининга.
- Ответить на ваши вопросы о процессе найма.

📝 Как прислать резюме для разбора:
Прикрепите ваше резюме в комментариях к этому посту.
Или отправьте его на почту: [email protected]

Не упустите возможность получить обратную связь от профессионала и повысить свои шансы на успешное трудоустройство!

🔔 Следите за обновлениями, чтобы не пропустить точное время начала стрима и познакомиться с другими гостями.

SwiftyGroup

06 Nov, 10:28


Как сделать собственный UIScrollView?

#вопросы

SwiftyGroup

05 Nov, 11:53


Всем привет! 👋 Признаюсь, публичные выступления — это мой страх😱, но там, где страх, — там и рост, верно?

Хочу пригласить всех на созвон📞, где мы сможем обсудить боль найма и делиться опытом в поиске работы. Сейчас многие сталкиваются с трудностями в одиночку, хотя вместе мы могли бы поддерживать друг друга и искать решения.

Планирую пригласить HR-специалиста🕵️‍♂️, который поделится полезными инсайтами и советами. На созвоне разберем актуальные вакансии, посмотрим на резюме и проведем время с пользой.

Сейчас я ищу подходящего HRа 🕵️‍♂️ для встречи, так что следите за анонсами нашей мини-конференции!

SwiftyGroup

05 Nov, 07:25


Разбор💻:
print("C") выполняется первым, потому что он находится вне асинхронных задач, добавленных в DispatchGroup.
Вот по шагам, почему так происходит:

1) Когда выполняется print("C"), основная очередь (главный поток) продолжает свою работу, не дожидаясь завершения асинхронных задач, которые добавлены в DispatchGroup. Этот print выполняется сразу же после того, как поставлены задачи в DispatchQueue.global().async.

2) Команды group.enter() и асинхронные задачи с DispatchQueue.global().async отправляют задачи в фоновый поток. Однако print("C") выполняется на главном потоке и не зависит от этих задач, поэтому он выводится сразу.

3) Затем на фоновом потоке запускаются две асинхронные задачи:
Первая (с sleep(2)) ждет 2 секунды и выводит "A".
Вторая (с sleep(1)) ждет 1 секунду и выводит "B".
Так как задержка во второй задаче меньше, она завершится быстрее и выведет "B" раньше, чем "A".

4) После завершения обеих задач (group.leave() вызван дважды), DispatchGroup завершает свою работу и вызывает group.notify, который выводит "Все задачи завершены" на главном потоке.

SwiftyGroup

01 Nov, 07:18


#квиз

SwiftyGroup

31 Oct, 12:11


Я дал вам кучу кастомных реакций, вы ставите огонечки, это как вообще?

SwiftyGroup

31 Oct, 07:29


Всем привет! 👋

Я написал новую статью на Boosty🏴‍☠️, и доступ к ней абсолютно бесплатный🚬!

Как успешно подготовиться к собеседованию: советы и рекомендации

В посте вы найдёте:

Эффективные методы повторения теории 📚
Секреты создания заметного резюме 📝
Стратегии успешного прохождения собеседований 🎯
Советы по развитию софт-скиллов и управлению стрессом 🤝

📖 Читать здесь: https://boosty.to/buik

Приятного чтения и удачи в подготовке! 🚀

P.S.: Некоторые из моих предыдущих статей тоже стали доступны бесплатно. Загляните и в них — возможно, найдёте что-то полезное для себя! 😉

SwiftyGroup

30 Oct, 10:30


Как бы вы реализовали кэширование изображений в приложении?

Подробнее:
https://medium.com/@mshcheglov/reusable-image-cache-in-swift-9b90eb338e8d
https://medium.com/@itsachin523/building-your-own-image-caching-in-ios-with-swift-d6a52912dd8f
#вопросы

SwiftyGroup

28 Oct, 07:18


Всем привет👋
Разбор пятничного квиза:
В задаче мы работаем с классами, которые в Swift являются типами ссылок (reference types). Это означает, что когда вы создаете переменную или константу, содержащую объект класса, она хранит ссылку на этот объект в памяти, а не сам объект. В результате любые изменения, сделанные через одну ссылку, отразятся на всех других переменных или константах, ссылающихся на тот же объект.

Давайте разберем код шаг за шагом:

Создание объектов класса:

let person1 = Person(name: "Alice")
let person2 = Person(name: "Bob")

Здесь мы создаем два объекта класса Person: person1 с именем "Alice" и person2 с именем "Bob". Эти объекты хранятся в памяти по своим адресам, и переменные person1 и person2 содержат ссылки на эти адреса.

Создание массивов:

let team1 = [person1, person2]
let team2 = team1

Здесь мы создаем массив team1, который содержит ссылки на объекты person1 и person2. Затем мы присваиваем массив team1 в team2. Так как массивы в Swift являются типами значений (value types), team2 создается как копия массива team1, но эта копия по-прежнему содержит ссылки на те же объекты person1 и person2.

Важно: Несмотря на то, что team2 является копией team1, оба массива содержат ссылки на одни и те же объекты в памяти.

Изменение свойства name:

team2[1].name = "Charlie"

Здесь мы изменяем значение свойства name у объекта person2, который находится на позиции 1 в массиве team2. Поскольку team2[1] и team1[1] ссылаются на один и тот же объект person2, изменение имени через team2 также отразится и на team1.

Проверка результата:

print(team1[1].name)

При выводе team1[1].name мы получаем "Charlie", так как это имя было изменено на "Charlie" в массиве team2. Поскольку team1 и team2 ссылаются на один и тот же объект person2, изменение имени через team2 также отражается на team1.

SwiftyGroup

25 Oct, 08:21


Всем привет!
Напоминаю про Boosty-канал🏴‍☠️, где я публикую материалы для подготовки к iOS-собеседованиям! Там вы найдете:

- перевод документации по Swift,
- список библиотек с подробными инструкциями,
- переводы популярных статей,
- задачи и решения с реальных собеседований.

Как всегда скидка 50%💰, собранные средства🤲 пойдут на верстку книги с вопросами и ответами(подписчики увидят ее первыми бесплатно)

SwiftyGroup

25 Oct, 06:44


#квиз

SwiftyGroup

24 Oct, 06:54


🚨 Обновление сертификатов Apple Push Notification Service (APNs) 🚨

17 октября 2024 года Apple объявила об изменении центра сертификации для Apple Push Notification Service (APNs). Важно учесть, что 20 января 2025 года новые сертификаты будут внедрены в sandbox, а 24 февраля 2025 года — в production.

🛠 Что нужно сделать:

Обновите Trust Store вашего сервера, который взаимодействует с APNs, добавив в него новый сертификат: SHA-2 Root: USERTrust RSA Certification Authority.
Убедитесь, что до указанных дат в Trust Store будут включены как старый, так и новый серверные сертификаты, чтобы избежать сбоев в доставке пуш-уведомлений.
❗️ Обратите внимание: вам не нужно обновлять SSL-сертификаты APNs, которые были выданы вам Apple.

Подготовьтесь заранее, чтобы не столкнуться с проблемами при отправке уведомлений!

https://developer.apple.com/news/?id=09za8wzy

SwiftyGroup

23 Oct, 10:16


KVO
добавил мобильную версию
#вопросы

SwiftyGroup

21 Oct, 07:25


Причина, по которой print(view.backgroundColor) выводит Optional(UIExtendedSRGBColorSpace 1 0 0 1), заключается в том, что изменение backgroundColor слоя напрямую влияет на свойство backgroundColor представления (UIView).

Вот подробное объяснение:

Изначальная установка цвета фона представления:
swift

view.backgroundColor = UIColor.green

Здесь вы устанавливаете свойство backgroundColor у UIView в зелёный цвет. Это означает, что и само представление, и его слой (CALayer) будут иметь зелёный фон.

Изменение цвета фона слоя:
swift

view.layer.backgroundColor = UIColor.red.cgColor

Здесь вы напрямую устанавливаете свойство backgroundColor у слоя (CALayer) в красный цвет. Это свойство типа CGColor, поэтому мы используем UIColor.red.cgColor.

Взаимосвязь между UIView и его CALayer:
В UIView, свойство backgroundColor является обёрткой над соответствующим свойством слоя (layer.backgroundColor).
Когда вы изменяете backgroundColor у слоя напрямую, это изменение отражается на уровне представления.
Поэтому, после установки view.layer.backgroundColor в красный цвет, свойство view.backgroundColor обновляется и начинает отражать это изменение.

Вывод значения backgroundColor:
swift

print(view.backgroundColor)


Когда вы печатаете view.backgroundColor, вы получаете текущий цвет фона представления.
Поскольку последний установленный цвет фона слоя — красный, view.backgroundColor теперь тоже красный.
Поэтому выводит Optional(UIExtendedSRGBColorSpace 1 0 0 1), что соответствует красному цвету с альфа-каналом 1 (полностью непрозрачный).

SwiftyGroup

18 Oct, 06:15


#квиз

SwiftyGroup

17 Oct, 07:19


Мок-собеседования — отличный способ подготовиться к реальным собеседованиям. Они помогают не только прокачать навыки общения и презентации, но и углубить понимание тех вопросов, которые часто задают на интервью.
Еще 18 мок-собесов, упорядоченных по грейдам, можно найти у меня в закрытом Notion подписавшись на Boosty🏴‍☠️(70-процентная скидка до конца недели)

SwiftyGroup

17 Oct, 07:14


Собеседование iOS Разработчика. Проектирование и лайфкодинг

Всем привет! 🤟

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

В данном выпуске вы увидите по сути тот лайфкодинг, который вы можете наблюдать на повседневной работе. По ходу собеседования, так же спрашивают и теоретические вопросы, которые так или иначе по большей часте относятся к часто используемым кейсам в iOS разработке. Желаем приятного просмотра!

P.S Если у кого-то плохо работает YouTube, то для вашего удобства мы выложили собеседование на наш бусти.

💬 Телеграм-канал Олега

SwiftyGroup

16 Oct, 11:43


Как создать массив со слабыми ссылками?
#вопросы
подробнее:
https://habr.com/ru/articles/726320/

SwiftyGroup

10 Oct, 09:05


Swift 6 — это важный этап для каждого iOS-разработчика. С его выходом придется пересматривать код и вносить изменения в проекты. Чтобы облегчить процесс миграции и лучше понять нововведения, статьи на русском языке можно почитать в Boosty🏴‍☠️ или в удобном формате в закрытом Notion.

SwiftyGroup

10 Oct, 09:04


🔢 Подборка материалов для изучения Swift 6

Migrating to Swift 6
What's new in Swift 6.0?

Дополнение

Migrate your app to Swift 6
Swift 6
Announcing Swift 6

SwiftyGroup

09 Oct, 07:19


Обрабока касаний в ios
#вопросы

SwiftyGroup

08 Oct, 07:56


Всем привет!👋

Я заметил, что многие подписчики на Boosty🏴‍☠️ не отправили почту для доступа к закрытому Notion. Понял, что для вас важны только статьи на самом Boosty, поэтому запустил новый уровень подписки, который включает только статьи. 🎯

В честь старта нового уровня — скидка 50%! 🔥

SwiftyGroup

07 Oct, 08:47


Всем привет!👋
разбор пятничного квиза🕵️‍♂️:
1) Создание массива объектов MyClass:
На этом этапе создается массив firstMass, содержащий три объекта класса MyClass:
Первый объект: с именем "Andrey"
Второй объект: с именем "Viktor"
Третий объект: с именем "Lena"

2) Присваивание массива firstMass в secondMass:
Массивы в Swift являются типами значений. Это означает, что при присвоении одного массива другому создается копия этого массива. Однако, хотя массивы копируются по значению, объекты, хранящиеся в этих массивах, являются ссылочными типами (так как это экземпляры класса MyClass). Это приводит к тому, что при копировании массива создается новый массив, но ссылки на объекты остаются теми же.
То есть теперь:
firstMass и secondMass — это два разных массива, но оба массива содержат ссылки на одни и те же объекты (MyClass).

3) Удаление последнего элемента из firstMass:
Операция popLast() удаляет и возвращает последний элемент массива firstMass. После этого массив firstMass становится:
[MyClass(name: "Andrey"), MyClass(name: "Viktor")]
Однако, массив secondMass остается неизменным и по-прежнему содержит:
[MyClass(name: "Andrey"), MyClass(name: "Viktor"), MyClass(name: "Lena")]

4) Изменение имени последнего объекта в firstMass:
После удаления последнего элемента из firstMass, последним объектом в этом массиве становится объект с именем "Viktor". На этом этапе его имя изменяется на "Ivan". Теперь firstMass выглядит так:
[MyClass(name: "Andrey"), MyClass(name: "Ivan")]
Поскольку secondMass содержит ссылки на те же объекты, это изменение также отражается в массиве secondMass. Таким образом, массив secondMass теперь содержит:
[MyClass(name: "Andrey"), MyClass(name: "Ivan"), MyClass(name: "Lena")]

5)Вывод содержимого secondMass:
При выводе массива secondMass в консоль вызывается свойство description каждого объекта в массиве. Это свойство возвращает значение переменной name для каждого объекта. Поскольку изменения были произведены над объектом, на который ссылаются оба массива, в консоль выводятся актуальные имена:
Andrey
Ivan (измененное имя второго объекта)
Lena (имя третьего объекта, которое не изменилось)

SwiftyGroup

04 Oct, 12:32


Всем привет!🚬
Возможно, кто-то не в курсе или уже подзабыл, но вот уже почти год я работаю👨‍🍳 над книгой "100 вопросов для iOS разработчика" с ответами на самые популярные вопросы, которые задают на собеседованиях. Черновой вариант уже готов, и сейчас его проверяют несколько ревьюеров с опытом в iOS более 10 лет, чтобы материал был максимально качественным.

Недавно я узнал, что верстка и выпуск книги потребуют финансовых затрат💰 (неожиданно, да?), поэтому я принял решение запустить Boosty🏴‍☠️. Там я буду выкладывать переводы официальной документации по Swift, популярных статей, вопросы и ответы с реальных собеседований, а также полезные тулзы для удобной разработки.

Каждую неделю я буду обновлять и добавлять новый контент на Boosty, а сейчас там доступна подписка со скидкой 70%! И главное — все подписчики получат онлайн-версию книги абсолютно бесплатно и раньше всех!

Поддержите проект и будьте в числе первых, кто получит доступ к книге и полезному контенту.🤲

SwiftyGroup

04 Oct, 09:48


#квиз

SwiftyGroup

30 Sep, 08:29


Всем привет!👋
разбор пятничного квиза🕵️‍♂️:

1) Вызов функции (runTest):
Функция runTest является асинхронной (async), что означает, что она выполняется асинхронно при вызове.

2) Первый print("1"):
Первая строка print("1") выполняется сразу, поскольку перед ней нет никаких await. Это означает, что "1" будет выведено в консоль сразу.

3) Блок MainActor.run {}:
Оператор await перед MainActor.run приостанавливает выполнение функции до тех пор, пока главный поток (MainActor) не станет доступен.
Когда выполнение попадает в блок MainActor.run, код выполняется на главном потоке (MainActor), и строка print("2") выполняется первой внутри этого блока. В консоли будет выведено "2".

4) Создание задачи:
Внутри блока MainActor.run создается новая задача Task. Эта задача также помечена как выполняемая на главном потоке (@MainActor).
Однако задача не выполняется сразу, она ставится в очередь. Таким образом, print("3"), который находится внутри задачи, не выполнится немедленно.
Сразу после создания задачи выполняется print("4"), и в консоль выводится "4".

5) Выход из блока MainActor.run:
После завершения блока MainActor.run, выполнение продолжается с следующей строки после блока, где находится print("5"). Эта строка выполняется, и в консоль выводится "5".

6) Выполнение задачи:
После того как основная функция завершится, асинхронная задача, созданная ранее, наконец выполняется, и строка print("3") выводится в консоль.

PS: У меня две недели отпуск🥇, соответственно количество постов будет сокращено🔨, спасибо за понимание!

SwiftyGroup

27 Sep, 11:12


Вопрос от @gl0ukhov
#квиз

SwiftyGroup

26 Sep, 10:08


Всем привет, у меня отличные новости! Наконец-то вышла финальная статья из цикла про структуры данных, над которым я работал последние два года. 🎉

В этот раз речь пойдет о графах — и поиске в ширину и глубину. Если вы только начинаете погружаться в мир алгоритмов и хотите действительно понять, как решать задачи с LeetCode⌨️, то эта статья и весь цикл обязательны к прочтению!

🔗 https://habr.com/p/845194/

Переходите по ссылке, читайте и не забывайте делиться своими мыслями и вопросами! 🤓📚

1,884

subscribers

105

photos

126

videos