EasySwift iOS🍏
3.02K subscribers
268 photos
8 videos
393 links
Все самое интересное в мире iOS разработки 🧑🏻‍💻

Предложить статью или новость: @EasySwiftBot

По всем вопросам обращаться к @itereznikov
Download Telegram
Что такое Accelerate и с чем его едят

Мало кто вообще слышал об этом фреймворке и, возможно, никогда не придет к тому, чтобы его использовать. Но чем шире ваши знания, тем больше шансов, что когда у вас появится специфическая задача, вы выберете правильный инструмент для ее решения.
👍81🔥1
SwiftUI: архитектура State-Model-View

Статья про подход к построению простой архитектуры через @State для отображения состояний. Автор советует не переусложнять и практично использовать SwiftUI так, “как оно есть”.

Но мне кажется, что это будет нормально работать только на простых экранах. Если делать что-то сложнее чем экран с парой кнопок, то в этих состояниях уже можно будет утонуть.
👍5🔥21
Автоматизация сборки приложения

Тему CI/CD незаслуженно обходят стороной, не придавая ей должного внимания, а ведь от CI/CD напрямую зависит time to market — время, которое компания тратит на реализацию и выпуск продукта, а разработчики могут сосредоточиться на инновациях и улучшении функциональности приложений.

В статье подробный гайд по настройке автоматизации сборки приложения для AppStore, используя Jenkins, Fastlane, TestFlight
👍73🔥1
Порефлексируем немного?

Reflection в swift – механизм, позволяющий получать информацию о типе, публичных и приватных свойствах объекта в Runtime и работать с ними.

Иногда полезный механизм, но лучше сто раз подумать, перед тем, как использовать его для какой то конкретной фичи в проде.
9🔥1
Server-side Swift для AI задач

Вдруг вы решили, что вам срочно нужно приложение с фунцией классификации изображения или другой ML задачей и вы не хотите делать это на клиенте, а знаете только Swift, то для вас есть решение – Vapor + CoreML.

Не уверен, что можно масштабировать этот подход на большое количество пользователей, но сделать Proof of concept более чем можно и получить миллионы $ инвестиций
👍132🔥2
Шаблон Trigger в SwiftUI

В последней версии SwiftUI появился шаблон Trigger. С его помощью можно заставить UI реагировать каждый раз, когда значение свойства, которое мы установим как триггер изменилось.

Подойдет, например, чтобы заставить Scroll Indicator мигать, воспроизводить звук или выполнить анимацию при каком-либо действии. И все это можно делать как "шаблон", который можно переиспользовать на других UI элементах.
👍112
GraphQL в IOS разработке

Aльтернативный подход к разработке сетевого API, который позволяет более тонко настроить детали запросов, используя единственную конечную точку.

В отличие от традиционных RESTful API, GraphQL позволяет клиенту запросить только необходимые поля, минуя лишнюю информацию, что существенно уменьшает количество запросов в сеть и улучшает производительность приложения.
5👍3🔥3
Библиотека Apollo iOS для работы с GraphQL

В статье о том, как внедрить и использовать библиотеку Apollo iOS для создания приложений с поддержкой GraphQL.

Установка либы может показаться излишне сложной, но это тот случай, когда один раз разобрался и дальше просто применяешь на практике.
💯62
Визуализация данных в SwiftUI с Swift Charts

Swift Charts - фреймворк от Apple, который позволяет преобразовывать данные в информативные и настраиваемые графики и диаграммы с очень небольшим количеством кода.

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

Еще один плюсик в том, что теперь можно обойтись без использования сторонних зависимостей.
👍72
This media is not supported in your browser
VIEW IN TELEGRAM
GPT-4o 🧠

Open AI выпустили новую языковую модель GPT-4o (o” значит “omni”), которая:
- мощнее других моделей
- доступна для бесплатных пользователей
- мультимодальна омниканальна: может генерировать контент или понимать команды в виде голоса, текста или изображений. Вот это просто настоящая магия
- улавливает эмоции и может отвечать с разной интонацией 😯
- доступна уже сейчас

Было очень много слухов, что Apple подружились с OpenAI и Siri ждет новое воплощение. К сожалению, об этом на презентации не было ни слова. Но я определенно с нетерпением буду ждать эту «One more thing» на WWDC. Такую Siri я бы очень хотел видеть.

P.S. Вы только посмотрите, как круто она отвечает голосом, как быстро и уместно она это делает. Очень советую полистать видосы про возможности у них в анонсе, для меня это взрыв мозга.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤯43💯1
Карантин UI тестов

Одна из проблем UI тестов – это их стабильность и больнее всего эта проблема ощущается, когда начинают падать UI тесты в компонентах, которые не были затронуты.

Ребята из hh.ru рассказывают как они решали эту проблему с помощью добавления таких тестов в «карантинный» тест план.
🔥41
Function Body Macros

Макросы продолжают развиваться: теперь их можно будет использовать для функций. Например, можно будет дополнить функции шаблонным кодом логирования:

@Logged
func g(a: Int, b: Int) -> Int {
return a + b
}

Вместо привычного:

func g(a: Int, b: Int) -> Int {
log("Entering g(a: \(a), b: \(b))")
defer {
log("Exiting g")
}
return a + b
}

Попробовать можно уже сейчас, но для этого нужно скачать текущий снепшот и добавить:
 -enable-experimental-feature BodyMacros 


Ждем в будущих версиях Swift'а!
🔥18👎3
Getting to Know TextKit

Многие из вас работают со стандартными дизайн компонентами, такими как UILabel и их почти всегда хватает. Но как только нам нужно сделать что-то более сложное, более производительное или что-то очень кастомное, то на помощь нам приходят более низкоуровневые фреймворки, например, TextKit.

В недавно прошедшей конференции try! Swift Tokyo Conference 2024 как раз был доклаз про TextKit 2, его внутренности и для каких задач его можно использовать.
👍3🔥3🤯1
This media is not supported in your browser
VIEW IN TELEGRAM
New accessibility features

Apple показали новые возможности в сфере «доступности», которые появятся в iOS 18. Что меня прям очень радует:
- отслеживание взгляда пользователя, которое поможет людям с ограниченными возможностями взаимодействовать с контентом
- Music Haptics – новый способ прослушивания музыки для глухих или слабослышащих пользователей
- «Прослушивание нетипичный речи» – улучшение распознавания голоса пользователей с приобретенными или прогрессирующими речевыми заболеваниями
- «Vehicle Motion Cues» – это вообще magic для многих – обещают меньше укачивания при езде в машине и залипании в телефон

Очень круто, что многие эти вещи работаю «on-device» и благодаря вкладу Apple в AI: самое настоящее применение современных технологий для прикладных задач.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
Подробно об акторах в Swift

Акторы в Swift 5.5 предназначены для безопасной обработки общего изменяемого состояния и предотвращения гонок данных при работе с многопоточностью.

В Swift акторами гарантируется изоляция данных: все изменяемые свойства и функции в акторе изолированы от прямого доступа извне.

В статье автор приводит примеры работы с акторами, подсвечивает основные моменты при работе с ними, а так же описывает процесс перехода на них.
👍7🔥3
if and switch expressions

Вдруг вы пропустили, что в Swift 5.9 заехали изменения в использование if и switch: теперь эти операторы можно использовать в качестве выражений. Это позволит писать более понятный код. Например:


let bullet: String
if isRoot && (count == 0 || !willExpand) { bullet = "" }
else if count == 0 { bullet = "- " }
else if maxDepth <= 0 { bullet = "▹ " }
else { bullet = "▿ " }


можно заменить на:

let bullet = if isRoot && (count == 0 || !willExpand) { "" }
else if count == 0 { "- " }
else if maxDepth <= 0 { "▹ " }
else { "▿ " }


Кстати, а в котлине это уже давно есть 🥲
🔥11
Access-level modifiers on import declarations

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

С приходом Swift 6 станет возможным добавлять к импортам зависимостей модификаторы уровня доступа, а именно:
public, package, internal, fileprivate и private.


public import PublicDependency


По умолчанию, в Swift 5 все зависимости публичные, однако в Swift 6 станут с модификатором internal.

Чтобы потестить эти модификаторы на Swift 5.9 нужно добавить флаг:
-enable-experimental-feature AccessLevelOnImport


А чтобы проверить, что будет если все импорты станут internal как в Swift 6, то нужно включить еще один флаг:
-enable-experimental-feature InternalImportsByDefault


Это достаточно серьезные изменения, которые могут сломать обратную совместимость для библиотек. Поэтому советую заранее подготовиться 😉
👍63🤔2
🔤🔤🔤🔤2️⃣4️⃣

Вот и прошел основной день долгожданной презентации Apple для разработчиков. На удивление многие прогнозы и слухи сбылись, сама презентация получилась достаточно насыщенной, особенно про AI.

Что меня порадовало:
- отдельный менеджер паролей: давно пора, но искренне жаль сторонние сервисы, им точно станет не легко
- Game Porting Toolkit 2 и игровой режим – опять большой упор в игры, и кажется, Apple хочет повторить свой успех Apple Music и Apple TV, но тягаться с Гейбом будет не просто
- калькулятор на iPad – теперь хотя бы понятно, почему они так долго его не выпускали 😬
- watchOS 11 и Vitals – надеюсь, что это новый виток развития приложения «Здоровье» и задел на сентябрскую презентацию с измерениями большего числа показателей организма
- Apple Intelligence – тут и комментировать не нужно, это , но хочется дождаться техно сессий и более детально погрузиться. Обидно, что доступно в этом году только в US, но будем ждать и на нашей улице праздник. Еще обидно, что с iPhone 15 Pro и M1 девайсов, но хотя бы понятно, что спустя пару лет это перестанет быть проблемой
- сотрудничество с OpenAI – это еще более крутая и понятная история, но если будет доступно только в Siri, нативных приложениях и там где есть UITextView, то уже не так радостно и круто

Что было очень не очень и даже обидным:
- visionOS 2 – что вообще поменялось, кроме как 8 стран добавили?
- iOS 18 / iPadOS / tvOS 18 – тут и комментировать нечего: кастомное расположение приложений и возможность их скрывать на рабочем столе, настраиваемый пункт управления и вырвиглазные иконки в темной теме. Просто amazing, который мы все заслужили 🥲
- Tap to Сash: «оплата через AirDrop» – очень крутая фича, но естественно, доступно лишь избранным странам и банкам. Никаких открытых API мы скорее всего не увидим
- Xcode Copilot – я даже засек: уделили ровно 14 секунд нашему главному инструменту. Спасибо, конечно, что рассказали про новый эмоджи генератор, но на главной презентации для разработчиков хотелось бы послушать чуть больше про Xcode.

На самом деле я думаю, что часть из пунктов выше раскроют на предстоящих сессиях и мы увидим еще много нового и интересного.
Stay tuned!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍6💯4👎21🤬1
Swift Testing

Apple представила новый фреймворк для тестирования, который:
- поддерживает Swift Concurrency
- по дефолту запускает тесты параллельно
- заменяет XCTAssertTrue, XCTAssertEqual и другие на достаточно умный макрос #expect()
- позволяет запускать тесты с заранее определенным наборам данных
- более информативно сообщает в случае падения теста
- разработан как open source и он кроссплатформен

Вот пример, как теперь будут выглядеть тесты:

@Test("Check video metadata",
.tags(.metadata))
func videoMetadata() {
let video = Video(fileName: "By the Lake.mov")
let expectedMetadata = Metadata(duration: .seconds(90))
#expect(video.metadata == expectedMetadata)
}


Попробовать можно сейчас с XCode 16 beta. Более подробно можно посмотреть в видео с WWDC.
👍161