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

Реклама: @new_repository

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

Бусти: boosty.to/dimov_ios
Download Telegram
Практический пример создания View-компонента на SwiftUI

В этой статье пошаговое руководство как создать собственный Custom View для городов, используя Sruct, Computed Property и несколько функций, чтобы рассчитать количество лайков и поездок. Вы можете адаптировать код по себя, и попробовать видоизменить его.

#digest
10👍6💩3🔥1
Cocoapods, Carthage, SPM: как выбрать менеджер зависимостей в iOS

Senior iOS-разработчик red_mad_robot Аня Кочешкова рассказала, чем отличаются три менеджера зависимостей, в каких случаях и для каких задач подойдёт тот или иной. Аня подробно объяснила, что такое семантическое версионирование, как устроены модули кода и в чём разница между динамическими и статическими библиотеками. Материал будет полезен джунам, которые только начали погружаться в разработку.

Head of Android red_mad_robot Central Asia Влад Бауэр поделился опытом, как решил нехватку iOS-разработчиков на одном из внутренних проектов. Он придумал решение: пошарил часть кода и перенёс его в Kotlin Multiplatform Mobile. Спойлер: у Влада получилось, и теперь он рассказывает о нюансах, с которыми ему пришлось столкнуться.

Источник канал

#digest #люди
👍7🔥32👎2
Внимание! Доклад по Async/await

В это воскресенье я проведу доклад на тему Async/await

В докладе будет:

• Реализация Async/await на реальных проектах.
• Разберем все особенности данной фичи.
• Какие подводные камни мы можем ожидать, используя Async/await.


И в конце позадаем вопросы...😊

Встречаемся в 18-00 по Москве в воскресенье 16 апреля по ссылке

#digest #доклад
👍29🔥76👎2
SwiftFormat: форматирование кода Swift

SwiftFormat — библиотека и инструмент командной строки для реформатирования кода Swift. SwiftFormat выходит за рамки того, что можно ожидать от форматера кода. В дополнение к корректировке пробелов он может вставлять или удалять неявные self, удалять лишние скобки и исправлять многие другие отклонения от стандартных идиом Swift.

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

#digest
👍12🔥5👎2👏2
Покупки в приложении в iOS

В этом руководстве, которое состоит из нескольких статей, автор статьи продемонстрирует, как добавлять покупки в приложение без лишних проблем, начиная с настройки покупок в App Store Connect и заканчивая обработкой покупок в приложении с примерами исходного кода.

IAP позволяет разработчикам взимать плату с пользователей за определенную функциональность или контент во время использования приложения.

Внедрение IAP требует, чтобы приложение использовало StoreKit API на устройстве. StoreKit управляет всеми коммуникациями с серверами Apple iTunes для получения информации о продукте и выполнения транзакций. Профиль подготовки должен быть настроен для IAP, а информация о продукте должна быть введена в App Store Connect.

#digest
👍144👎2🔥1
Цикломатическая сложность в Swift

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

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

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

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

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

#digest
👍11🤯3👎2🔥21
Swift iOS подготовка к собеседованиям

Большой цикл статей для подготовки к собесам по iOS(общие вопросы, Swift, SwiftUi, архитектура, design pattern, многопоточность, http/https, структуры данных, база данных и тд).

• Part 1 – Language features
• Part 2 – Auto layout & UIKit
• Part 3 – Threading & concurrency
• Part 4 – Memory management
• Part 5 – Architecture and design pattern
• Part 6 Top 100+ iOS Interview Questions And Answers in 2023
• IOS Developer – Bonus Interview Questions

#digest #собеседования
👍28🔥73🤮2
📷 Пишем камеру на AVFoundation

В это воскресенье Эмиль Имамов, iOS разработчик продукта "3D Платформа" поведает нас в мир библиотеки AVFoundation и расскажет, как с ним работать на реальных проектах.

Так же у Эмиля написана статья на habr. Ознакомиться перед докладом можно по ссылке.

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

Встречаемся завтра, в 18-00 по Москве.

#digest #доклад
👍17🔥4🤮21
Как Реализовать FaceID или TouchID в iOS

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

Автор подробно описывает сразу оба варианта на UIKit и swiftUI.

#digest
👍17🔥2💩21
Как хранить данные в iOS: UserDefaults, Keychain и сэндвичи

Хранение данных — одна из самых ведущих тем в разработке. Очень важно уметь выбирать подходящий инструмент для разных ситуаций и знать, как хранить данные безопасно и максимально эффективно, не замедляя приложение. Старший iOS-разработчик red_mad_robot Аня Кочешкова рассказывает о механизмах хранения, способах работы с ними, а также плюсах и минусах каждого подхода.

Зачем вообще хранить данные? Например, если нужно кешировать какую-то информацию для ускорения работы, работать в офлайн-режиме или сохранить пользовательские настройки. Выбор механизма зависит от поставленной задачи, объёма данных, которые нужно хранить, и множества других факторов. Данные можно хранить в UserDefaults, Keychain, Property Lists или же базах данных и NSCache.

UserDefaults — для хранения пользовательских настроек и флагов.
Keychain — для безопасного хранения данных.
Property Lists — для хранения конфигурации приложения или его библиотек.
Базы данных — для хранения большого объёма различных данных.
NSCache — для хранения временных данных.


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

#digest
👍155🔥4💩2
Combine от А до Я

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

Вот руководство от А до Я по началу работы с Combine в Swift с примерами кода для тех, у кого нет опыта.

#digest #combine
👍144🔥3💩2
И снова всем привет! Возвращаемся к Вам с очередным контентом.

В это воскресенье у нас новое интервью на канале. Гость - Анатолий Кнутарев.
Менеджер проектов сайта и мобильного приложения

Мы с ним хотим пообщаться и поспрашивать его за:

• Можно ли стать хорошим пм-ом если ты не работал как разработчик?
• Поговорим про контроль и коммуникацию между отделами
• Поговорим про рынок труда


Если у вас есть вопросы к гостю - пишите мне в лс @new_repository 🙂

Встречаемся в 18-00 по Москве в воскресенье 30 апреля по ссылке.

#digest #интервью
8👍2🔥2🥴2
Как торговаться на собеседовании, чтобы получить максимум и не потерять оффер

Как бы это неприятно ни звучало, собеседование — это всегда история про «продажу себя». И тут важно понимать то, что цену, конечно, устанавливает работодатель, но часто ее можно увеличить в свою пользу

У каждого есть своя цель, свой набор приемов и свои аргументы — и вы ими обмениваетесь, пока один из вас не «победит».

Сами торги заключаются в том, что вы или наниматель называете цену. А затем пытаетесь склонить ее в свою сторону, отталкиваясь от собственных задач и интересов. Побеждает тот, у кого доводов больше и кто не стесняется их применять. Для соискателя «победа» — это получить оффер с хорошей зарплатой, желательно больше ожидаемой. И у нанимателя тоже есть своя победа — договориться о минимальной зарплате, даже если есть бюджет на большую.

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

О том, как подготовиться к таким торгам, как торговаться и как тренироваться торговаться читайте в данной статье.

#digest #собеседования
8👍3🔥2💩1
This media is not supported in your browser
VIEW IN TELEGRAM
📚FSCalendar библиотека для реализации календаря

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

Это полностью настраиваемая библиотека календарей под iOS, совместимая с Objective-C и Swift. 🗓

На мой взгляд одна из лучших библиотек для добавления кастомного календаря в проект

Ссылка на git

📚CalendarKit - похожая библиотека календаря, но для показа задач на день или неделю. Их можно использовать в тандеме.

Это полностью настраиваемая библиотека календарей под iOS, совместимая со Swift.
Git: https://github.com/richardtop/CalendarKit
Приложение-референс: https://github.com/richardtop/CalendarApp
Видеоурок по созданию такого приложения: https://www.youtube.com/watch?v=cJ63-_z1qg8


#digest #полезное #библиотека
👍132🔥1🤮1
Как реализовать FaceID или TouchID в iOS

Биометрическая аутентификация - это форма нового безопасного шага, который сокращает процесс использования сложных алгоритмов и операций.
Swift обрабатывает биометрическую аутентификацию в LocalAuthentication фреймворке и использует LAContext в качестве класса. Apple ограничивает три попытки для FaceID и две для TouchID, пока это не приведет пользователя к вводу кода экрана блокировки или возврату к экрану входа в систему. Вы можете настроить локализацию кнопки отмены и кнопку “Использовать пароль” в качестве запасного варианта.
Перед их внедрением нам нужно добавить наше разрешение на использование FaceID в нашем Info.plist файле. TouchID не требует такого разрешения.

Статья с примерами кода на SwiftUI, UIKit.

#digest #FaceID #TouchID
👍63👎2🔥1
Почему увольняют самых опытных? Потому что они слишком умные. Тейлоризм 21-го века

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

Наверное, опытный и авторитетный специалист в подчинении не нравится менеджерам. Ведь они сами таким авторитетом не обладают. «Рок-звезда» среди разработчиков не нравится и руководству, которое теряет нити управления компанией, наблюдая человека намного умнее и талантливее себя. Они боятся и терпят его только до тех пор, пока на нём всё держится.

Эгоцентричному менеджеру не хочется иметь в подчинении специалиста, который на голову выше его по интеллекту и способностям. «Рок-звезда» унижает окружающих самим фактом своего существования, а менеджеров ставит на место, метко комментируя результаты их глупых инициатив, тимбилдингов и планёрок. Он ведь сам не боится увольнения, потому что его с руками оторвёт любая компания конкурентов.

В итоге складывается ситуация, что с одной стороны находится умнейший специалист, который не боится увольнения. А с другой — группа посредственных управленцев, которым эта «звезда» как кость в горле. Финал немного предсказуем.

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

Читать продолжение в интерессной статье.

#процессы
👍9👎54🤯2🔥1
Всем привет! Если кто-то задаётся вопросами, что с трансляциями, и будут ли прямые эфиры? Да, будут. Сейчас идут праздники, и после них мы с вами вернёмся со следующими темами

- Круглый стол на обсуждение чат GPT и нейроных сетей.

-HTTP/HTTPS протоколы. Доклад

- Идеальный кандидат на собеседовании. Доклад

Всем спасибо! Всем хороших выходных ❤️☺️
17🔥7🤡3👍2
Ветеранов осталось очень мало, а те, что живы, уже в преклонном возрасте. Если у вас есть родные или знакомые - скажите им, пожалуйста, спасибо от всех нас, когда будете поздравлять.
С Великим праздником!
48👏6🤡6👍4💩4🤮2🤔1🏆1
Акторы в Swift (Actors in swift)

Что такое актор как сущность? Это не класс и не структура. Вот некоторые характеристики актора:

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

Пример, как работают акторы в Swift можно прочитать подробно в данной статье. Автор делится примерами реализаций, и как с ними работать в реальных проектах.

#digest #actor
12👍3🔥3💩2
This media is not supported in your browser
VIEW IN TELEGRAM
Hero - это библиотека для создания переходов между контроллерами просмотра iOS.

Она предоставляет декларативный слой поверх громоздких API-интерфейсов UIKit для перехода, что делает пользовательские переходы легкой задачей для разработчиков.

На уровне контроллера просмотра Hero предоставляет несколько переходов по шаблону, которые вы можете настроить с помощью heroModalAnimationType, heroNavigationAnimationType и heroTabBarAnimationType. Они могут быть использованы в качестве основы ваших пользовательских переходов. Объедините с heroID & heroModifiers, чтобы создавать свои собственные уникальные переходы.

Продолжительность автоматически определяется изменением расстояния и размера, что избавляет вас от лишних хлопот и обеспечивает последовательную и восхитительную анимацию.

#digest #библиотека
👍154🔥2💩1