Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
📺 Compose iOS. Как это работает #0 (1 час)
Мы в Тинькофф запустили новое шоу - "Как это работает". В пилотном выпуски позвали Лешу Гладкова, автора Mobile Developer, чтобы он показал нам свой опыт с Compose iOS. Увидите код и работы приложения на iOS симуляторе, а также боли запуска )
Мы в Тинькофф запустили новое шоу - "Как это работает". В пилотном выпуски позвали Лешу Гладкова, автора Mobile Developer, чтобы он показал нам свой опыт с Compose iOS. Увидите код и работы приложения на iOS симуляторе, а также боли запуска )
👍6👎1
An Unexpected Behavior of Subclasses in Swift
Название статьи подсказывает, но посмотрите на код со скрина и подумайте, что будет выведено
Father: Odin
Son: Thor
Son: Odin
Может ли такое произойти в реальном проекте? Да, например со ViewController'ами.
Когда мы переопределяем метод с дефолтным значением, безопаснее не менять эти дефолтные значения. Причина заключается в том, что дефолтные значения привязаны к статическому типу и не вычисляются динамически.
#swift
Название статьи подсказывает, но посмотрите на код со скрина и подумайте, что будет выведено
Son: Thor
Son: Odin
Когда мы переопределяем метод с дефолтным значением, безопаснее не менять эти дефолтные значения. Причина заключается в том, что дефолтные значения привязаны к статическому типу и не вычисляются динамически.
#swift
😱14👍5👎1
Make it for me: Factory pattern and Swift
Используйте фабричный метод, если вы:
👉 заранее не знаете точных типов и зависимостей объектов, с которыми должен работать ваш код
👉 хотите предоставить пользователям вашей библиотеки способ расширения ее внутренних компонентов
👉 хотите сэкономить системные ресурсы за счет повторного использования существующих объектов, а не каждый раз пересобирать их
#patterns
Используйте фабричный метод, если вы:
👉 заранее не знаете точных типов и зависимостей объектов, с которыми должен работать ваш код
👉 хотите предоставить пользователям вашей библиотеки способ расширения ее внутренних компонентов
👉 хотите сэкономить системные ресурсы за счет повторного использования существующих объектов, а не каждый раз пересобирать их
#patterns
👍5👎1
Вышло ядро Linux 6.2 с поддержкой Apple M1
Благодаря добавлению поддержки чипов Apple M1 Pro, M1 Max и M1 Ultra, владельцы новых Mac могут рассчитывать на запуск Linux на своих машинах с процессором M1. Конечно, на данный момент все экспериментально, но это ненадолго.
Кроме поддержки M1, ядро Linux 6.2 включает множество функций, созданных такими компаниями, как Intel, AMD, Google и Red Hat
#os
Благодаря добавлению поддержки чипов Apple M1 Pro, M1 Max и M1 Ultra, владельцы новых Mac могут рассчитывать на запуск Linux на своих машинах с процессором M1. Конечно, на данный момент все экспериментально, но это ненадолго.
Кроме поддержки M1, ядро Linux 6.2 включает множество функций, созданных такими компаниями, как Intel, AMD, Google и Red Hat
#os
❤4🤩4👍1👎1
72% всех iPhone работают на iOS 16
Если взять вообще все смартфоны Apple, то 72% всех iPhone работают под управлением iOS 16, а 20% — на iOS 15. Около 8% iPhone работают под управлением более ранних версий.
Принятие iOS 16 опережает iOS 15 на основе данных, опубликованных компанией в январе 2022 года. Тогда около 72% моделей iPhone, выпущенных за последние четыре года, работали под управлением iOS 15, и 63% вообще всех iPhone работали на пятнадцатой версии.
#ios
Если взять вообще все смартфоны Apple, то 72% всех iPhone работают под управлением iOS 16, а 20% — на iOS 15. Около 8% iPhone работают под управлением более ранних версий.
Принятие iOS 16 опережает iOS 15 на основе данных, опубликованных компанией в январе 2022 года. Тогда около 72% моделей iPhone, выпущенных за последние четыре года, работали под управлением iOS 15, и 63% вообще всех iPhone работали на пятнадцатой версии.
#ios
👍8👎1
Introducing EditKit Pro
EditKit Pro встраивается в Xcode и добавляет:
👉 генерацию комментариев MARK
👉 Beautify JSON, например, для моков
👉 генерацию Codable структур из JSON
👉 разбиение массива или длинной строки на несколько строк
👉 сортировку по алфавиту для импортов и других строк кода
Это лишь некоторые фичи EditKit Pro
Ссылка на скачивание
#tools
EditKit Pro встраивается в Xcode и добавляет:
👉 генерацию комментариев MARK
👉 Beautify JSON, например, для моков
👉 генерацию Codable структур из JSON
👉 разбиение массива или длинной строки на несколько строк
👉 сортировку по алфавиту для импортов и других строк кода
Это лишь некоторые фичи EditKit Pro
Ссылка на скачивание
#tools
👍10👎1
7 открытых iOS-проектов, которые помогут изучить SwiftUI
👉 Clean Architecture for SwiftUI + Combine
👉 The OldOS Project - воссоздает полнофункциональную версию iOS 4 в SwiftUI
👉 SwiftUICraft - Minecraft, но сделанный с помощью SwiftUI
👉 Velik - приложение для отслеживания поездок, созданное на SwiftUI с использованием Combine и CoreData
👉 Open Sesame - менеджер паролей с множеством функций
👉 Swiftui 2048
👉 Expense Tracker - приложение для отслеживания расходов, созданное с помощью Core Data и SwiftUI
#swiftUI
👉 Clean Architecture for SwiftUI + Combine
👉 The OldOS Project - воссоздает полнофункциональную версию iOS 4 в SwiftUI
👉 SwiftUICraft - Minecraft, но сделанный с помощью SwiftUI
👉 Velik - приложение для отслеживания поездок, созданное на SwiftUI с использованием Combine и CoreData
👉 Open Sesame - менеджер паролей с множеством функций
👉 Swiftui 2048
👉 Expense Tracker - приложение для отслеживания расходов, созданное с помощью Core Data и SwiftUI
#swiftUI
👍8👎1
Peer group benchmarks
С помощью peer group benchmark в App Analytics вы можете сравнить свое приложение с похожими по нескольким ключевым показателям, включая коэффициент конверсии, коэффициент удержания на 1-й, 7-й и 28-й день, коэффициент сбоев и средний доход на одного платящего пользователя, чтобы понять эффективность вашего приложения. Показатели определяются так же, как стандартные показатели приложений в App Analytics, и отображаются с недельными интервалами.
#appstore
С помощью peer group benchmark в App Analytics вы можете сравнить свое приложение с похожими по нескольким ключевым показателям, включая коэффициент конверсии, коэффициент удержания на 1-й, 7-й и 28-й день, коэффициент сбоев и средний доход на одного платящего пользователя, чтобы понять эффективность вашего приложения. Показатели определяются так же, как стандартные показатели приложений в App Analytics, и отображаются с недельными интервалами.
#appstore
🤩2👎1
A Better Way To Test Reference Cycles in iOS
Как реализовать тестирование на цикл сильных ссылок:
1️⃣ В тестовом классе добавляем
2️⃣ Определяем вспомогательный метод, который инициализирует тестируемый объект и присваивает
3️⃣ В методе
4️⃣ В методах с тестами инициализируем тестируемый объект с помощью метода из 2 шага
Если обнаруживается цикл сильных ссылок, то в методе tearDown будет ошибка
#testing #memory
Как реализовать тестирование на цикл сильных ссылок:
1️⃣ В тестовом классе добавляем
weak var weakSUT
на тестируемый объект2️⃣ Определяем вспомогательный метод, который инициализирует тестируемый объект и присваивает
weakSUT
его значение 3️⃣ В методе
tearDown
добавляем проверку, что weakSUT
имеет значение nil4️⃣ В методах с тестами инициализируем тестируемый объект с помощью метода из 2 шага
Если обнаруживается цикл сильных ссылок, то в методе tearDown будет ошибка
#testing #memory
👍5👎1
Какие методы безопасного хранения данных в iOS вы использовали?
Anonymous Poll
12%
Не храню чувствительные данные на устройстве
68%
Keychain
9%
Шифрую в файл
0%
Другое (в коммент)
22%
Посмотреть результат
👎1
Storing Payment Data On iOS: My Take
Как хранить чувствительные данные на iOS:
👉 Не храните их без крайней необходимости 👩✈️
👉 Keychain - зашифрованный контейнер для хранения данных, таких как пароли и криптографические ключи. Это безопасно, но обычно используется только для небольших фрагментов данных
👉 Шифрование. Чтобы добавить дополнительный уровень безопасности, вы также можете зашифровать небольшие фрагменты данных перед их сохранением в Keychain. Можно использовать алгоритм симметричного шифрования, такой как AES, с уникальным ключом для каждого пользователя.
👉 Файлы. Вы можете использовать шифрование для файлов в secure enclave iOS, используя безопасные API данных
#memory #security
Как хранить чувствительные данные на iOS:
👉 Не храните их без крайней необходимости 👩✈️
👉 Keychain - зашифрованный контейнер для хранения данных, таких как пароли и криптографические ключи. Это безопасно, но обычно используется только для небольших фрагментов данных
👉 Шифрование. Чтобы добавить дополнительный уровень безопасности, вы также можете зашифровать небольшие фрагменты данных перед их сохранением в Keychain. Можно использовать алгоритм симметричного шифрования, такой как AES, с уникальным ключом для каждого пользователя.
👉 Файлы. Вы можете использовать шифрование для файлов в secure enclave iOS, используя безопасные API данных
#memory #security
👍4👎1
Как мы приложение Додо Пиццы на арабский переводили
Некоторые выводы статьи:
👉 Если сразу правильно верстать, то всю остальную работу iOS сделает за вас
👉 Чем меньше кастомных элементов, тем лучше это выглядит в RTL
👉 На вёрстке и переводах дело не заканчивается, есть много культурных особенностей, про которые тоже важно не забыть
👉 Не все картинки можно отзеркалить автоматически
👉 Мы очень привыкли к LTR, поэтому готовое адаптированное приложение лучше показать кому-нибудь из носителей арабского языка, чтобы точно ничего не пропустить
👉 Снепшот-тесты ускоряют разработку и помогают понять, что вы ничего не сломали в процессе.
👉 Поддержка RTL — это не разовое мероприятие, а непрерывный процесс
#локализация
Некоторые выводы статьи:
👉 Если сразу правильно верстать, то всю остальную работу iOS сделает за вас
👉 Чем меньше кастомных элементов, тем лучше это выглядит в RTL
👉 На вёрстке и переводах дело не заканчивается, есть много культурных особенностей, про которые тоже важно не забыть
👉 Не все картинки можно отзеркалить автоматически
👉 Мы очень привыкли к LTR, поэтому готовое адаптированное приложение лучше показать кому-нибудь из носителей арабского языка, чтобы точно ничего не пропустить
👉 Снепшот-тесты ускоряют разработку и помогают понять, что вы ничего не сломали в процессе.
👉 Поддержка RTL — это не разовое мероприятие, а непрерывный процесс
#локализация
👍6👎1