iOS Такой 🍏
3.39K subscribers
420 photos
10 videos
2 files
301 links
IT | Подкасты | Apple | iOS Материалы | Swift

Реклама: @new_repository

Тёплый чат: https://t.me/+tzWmsOMTPpFjMzAy

Бусти: boosty.to/dimov_ios
Download Telegram
Вопросы с собеседований: в чем разница Weak и Unowned в Swift

В Swift weak и unowned — это два различных типа ссылок, которые позволяют избежать циклических зависимостей между объектами и предотвратить утечки памяти.

Weak (Слабая ссылка):

🔴weak используется, когда ссылка на объект не должна увеличивать счетчик ссылок объекта.
🔴Если объект, на который указывает weak ссылка, был освобожден, weak ссылка автоматически становится nil.
🔴Опциональный тип используется для weak ссылок, так как они могут быть автоматически устанавливаемыми в nil.

Unowned (Неудерживаемая ссылка):

🔴unowned также не увеличивает счетчик ссылок объекта, но предполагается, что объект, на который указывает unowned ссылка, всегда существует (не может быть nil).
🔴Если объект, на который указывает unowned ссылка, был освобожден, попытка доступа к этой ссылке приведет к краху приложения.
🔴Используется, когда можно гарантировать, что объект, на который указывает ссылка, будет существовать до тех пор, пока существует unowned ссылка.

Выбор между weak и unowned зависит от сценария использования. Если объект, на который указывает ссылка, может быть освобожден и ссылка может стать nil, то используйте weak. Если вы уверены, что объект всегда будет существовать, используйте unowned. Ошибочное использование unowned в случае, когда объект может быть освобожден, приведет к краху приложения из-за доступа к освобожденной памяти.

#digest
Please open Telegram to view this post
VIEW IN TELEGRAM
Статистика JetBrains по Swift и Objective-C

Например
статистика по UI фреймворкам и менеджерам зависимостей. По ссылке больше;)

Эти вопросы были заданы только разработчикам, которые выбрали Swift или Objective-C в качестве одного из трех своих основных языков программирования.

*Примечательно, если переводить статью с английского через Яндекс, название технологии Swift Package Manager он сохраняет. А переводчик по-умолчанию на сайте JetBrains от Google по-умолчанию переводит что может, у него получается "Менеджер зависимостей Swift".

#digest
Всем привет! Давно не виделись :)

Мы не сидели сложа руки, а готовили для вас новую рубрику - "Как мы стали джунами"

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

Ребят, нас очень мотивирует ваша обратная связь! 
С вас лайки и комментарии, а с нас всё более качественный и полезный контент :) 
Увидимся!

00:44 Гости
01:34 Почему iOS/Android?
03:58 Как учились?
07:42 Обучающие материалы бесполезны на реальных проектах?
13:52 В какой момент поняли, что пора искать работу?
16:00 Про поиск работы
18:44 Про вранье в резюме
24:56 Ожидания/реальность
26:33 Про менторов
29:00 Про синдром самозванца
34:28 Советы самому себе в прошлом
35:52 Мифы про покраску кнопок
37:43 Про индивидуальный план развития
42:43 Про сожаления о прошлом
43:49 Советы от ребят по поиску работы
47:10 Про самые важные навыки


#digest
Мок-собеседование iOS разработчика

Что такое Mock Interview? Mock Interview - это практическое тренировочное собеседование, которое отлично подготовит вас к реальному собеседованию на работу. Его основная цель - смоделировать приближенную к реальности ситуацию job interview и отработать возможные ответы на трудные вопросы.

Привет! В сегодняшнем выпуске у нас в гостях Миша и Вова, вы уже знакомы. Миша проведет собес, а Вова попытается защитить свой пояс UFC, ой, свое звание сеньора. Будет жарко! Будет много лайфкодинга! Приятного просмотра!

Не скупитесь на обратную связь! Это важно. Вместе мы сделаем мир ИТ чуть более доступным для всех 😊

#digest #собеседование
Требуется стажёр в стартап из 35 стажёров

Время для очередного выпуска о вакансиях мечты. В IT-стартап под названием ИП «Гаврыш» потребовался стажёр — React-разработчик.

Кандидатам предлагают поучаствовать в разработке перспективного web-приложения — планировщика задач. Проект создаётся силами 35 стажёров на протяжении 1 года. К сожалению, прибыли он пока не приносит, поэтому ИП «Гаврыш» просит войти в положение и работать без зарплаты.

Требование к стажёрам лишь одно: пройденный или самостоятельно изученный курс по Frontend-разработке.

Условия работы:

- Удалённая работа от 4 часов в день.
- Работа без трудового договора.
- Зарплаты нет.
- Менторов нет.
- Подписать соглашение о том, что права на код принадлежат ИП «Гаврыш».

В вакансии об этом не сказано, но что-то нам подсказывает, что технику для работы тоже не предоставят.

Взамен ИП «Гаврыш» обещает опыт коммерческой разработки. Откуда появится опыт коммерческой разработки на проекте, который не приносит прибыли, в вакансии не объяснили. Чему может научиться стажёр в компании, где нет опытных старших специалистов, тоже неясно. С таким же успехом 35 стажёров могли собраться, создать репозиторий с открытым исходным кодом и разрабатывать тот же самый продукт. При этом никакой ИП «Гаврыш» не смог бы завладеть результатами труда.

Не работайте с Гаврышами.
Это просто пример вакансии. Таких вакансий и на iOS полным полно.

#вакансиямечты
Как использовать дженерики в Swift

Дженерики — это один из подходов, который обеспечивает множество преимуществ, таких как более высокая производительность, меньшее количество кода, повторно используемый код и т.д.

Одна из наших основных обязанностей как разработчиков — максимально упрощать код и избегать повторений. Дженерики — это один из подходов, который обеспечивает множество преимуществ, таких как более высокая производительность, меньшее количество кода, повторно используемый код и т.д. Поэтому я считаю важным, чтобы каждый разработчик знал о них.

Статья в которой разбирается принцип работы дженериков с примерами кода, а так же видеоматериал.

#digest
Всех с наступающим 🎄 Любви и хороших проектов, пусть все получится и приносит радость.

Следите за нами, в новом году мы будем радовать вас только лучшим и качественным контентом.
Обнял ☺️
Спасибо всем Вам❤️
Разговоры про Apple

Друзья, всем привет!
Сегодня у нас лайтовый эфир на поговорить.

А побеседуем мы о новинках, похоливарим насчет ИИ и порассуждаем о высоком. Приятного просмотра!

#digest
Мастерство работы в SwiftUI

Инсайдерские советы и приемы для оптимизации производительности приложений.
SwiftUI постепенно набирает силу и становится предпочтительным выбором для создания приложений. В этом посте мы рассмотрим важные моменты, которые помогут вам повысить производительность и эффективность разработки приложений.

Содержание статьи

- Redux или MVVM?
- Используйте
@StateObject и @ObservableObject
- Создавайте
@Published переменные с осторожностью
- Разбивайте содержимое body на более мелкие части для минимизации времени компиляции
- Предпочтите
@State для анимации вместо @Published
- Объявляйте объекты Observable в определенном месте, чтобы избежать ненужного обновления UI
- Найдите, какое изменение данных вызывает обновление представления SwiftUI
- Используйте LazyHStack и LazyVStack, если у вас длинный список
- Есть ли что-нибудь похожее на viewDidLoad()?
- Используйте UIKit компоненты непосредственно в SwiftUI
- Модификатор с условиями
- Избегайте совместного использования .padding и .frame
- Используйте GeometryReader с умом
- Эпизодическое использование AnyView
- Обязательное используйте ID в Foreach и List
- Предпочитайте использовать текст, а не метку
- Используйте Group для возврата нескольких экземпляров представления
- Используйте .fixedSize(), чтобы указать, что фрейм не изменяется
- Напутственные слова


#digest
😱 AnyView — зло SwiftUI

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

Он пришел к выводу, что AnyView может существенно замедлять работу SwiftUI, особенно при большом количестве элементов в иерархии представлений. Также дал несколько советов, как избежать AnyView и использовать более эффективные способы работы с разными типами представлений.

#digest
SwiftUI Interview Questions.pdf
27.8 KB
Вопросы по SUI

Если вы готовитесь к собеседованию на SwiftUI проект или просто работаете с SwiftUI, но хотите расширить свои знания, вот список хороших вопросов, которые помогут вам подготовиться

#digest #собеседование
Автор:
@eleev
Как снять логи при краше мобильного приложения?

При тестировании приложений в большинстве случаев, мы сталкиваемся со сбоем приложения. И в таких ситуациях очень важно уметь собирать логи с устройства, чтобы максимально быстро пофиксить ошибки.

Подробная статья как снимать логи крешей приложений разными способами в iOS/Android.

Как получить логи с iOS?
- Непосредственно на самом девайсе.
- Через Xcode.

#digest
Как массив хранит ссылки? Сильно или слабо?

Правильный ответ — сильно.
А как сделать слабо? Использовать NSPointerArray

#digest
This media is not supported in your browser
VIEW IN TELEGRAM
Конфигурация поведения отскока ScrollView в SwiftUI

Конфигурация поведения отскока ScrollView позволяет определить, отскакивает ли прокручиваемое представление при достижении конца его содержимого. Независимо от того, идет ли речь о горизонтальной или вертикальной прокрутке списка, вы можете настроить оба направления с помощью модификаторов вида в SwiftUI.

В данной статье приводятся различные примеры кода и подробно рассказывается как достичь такого состояния.

#digest
🌐Как выглядит установка альтернативного магазина

• Возможно в будущем добавят RuStore и у всех будет доступ ко всем удалённым приложениям.
Ожидаемо
Forwarded from Воробей
Альтернативные сторы умерли сразу как их анонсировали. Их тупо невыгодно делать:

– Владелец платит за каждую установку магазина 0.5€ в год
– У разработчика бесплатно 1 млн установок, но дальше платит за каждую установку приложения 0.5€ в год
Как через Push-уведомления на iPhone утекают данные пользователей

Исследователь безопасности Томми Мыск (Tommy Mysk) продемонстрировал, как push-уведомления на iPhone могут использоваться популярными приложениями для скрытой отправки данных о пользователе.

В новом ролике, рассказывающем об этой практике, Мыск рассказал о том, как некоторые приложения для iOS используют функцию, представленную в iOS 10, которая позволяет приложениям настраивать push-уведомления. Эта функция, изначально предназначенная для того, чтобы приложения могли обогащать уведомления дополнительным контентом или расшифровывать зашифрованные сообщения, похоже, была использована некоторыми разработчиками для других действий. Согласно выводам Мыска, различные популярные приложения, включая TikTok, Facebook, Twitter, LinkedIn и Bing, используют короткое время фонового исполнения, предоставленное для такой настройки уведомлений, для отправки аналитической информации.

#digest
Что лучше: бесконечная прокрутка, пагинация или дополнительная загрузка?

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

А что лучше?
Как обычно, всё зависит от задач:
- если нужна структурность, очевидная навигация и разбивка на одинаковые порции — то пагинация;
- если нужно максимально долго удержать читателя на сайте — то бесконечная прокрутка (именно так делают все соцсети);
- если хочется бесконечности, но нужен подвал (или нужно измерить, насколько глубоко читатель хочет изучить сайт) — то дополнительная загрузка.