Делегирование в Swift, паттерны Delegate и Data Source
Делегирование в Swift используется повсеместно в iOS для передачи данных между классами. Этот инструмент необходим в наборе каждого разработчика, и сегодня мы выясним, как именно работает делегирование. Часто большинство разработчиков просто используют готовый код, не понимая особенностей его реализации.
Подробно прочитать про данный паттерн можно в этой статье
Делегирование в Swift используется повсеместно в iOS для передачи данных между классами. Этот инструмент необходим в наборе каждого разработчика, и сегодня мы выясним, как именно работает делегирование. Часто большинство разработчиков просто используют готовый код, не понимая особенностей его реализации.
Подробно прочитать про данный паттерн можно в этой статье
🔥4❤2👍2
IndexPath Класс представляет путь к определенному узлу в дереве вложенных коллекций массивов. Этот путь известен как путь индекса.
Каждый индекс в indexPath представляет индекс в виде массива дочерних элементов от одного узла в дереве до другого, более глубокого узла.
Например, indexPath 1.4.3.2 задает путь, показанный на рисунке
Различия между indexPath.row and indexPath.item
Как правилоindexPath, обладает двумя свойствами
1 - рядный
2 - элемент
row - свойство используется с UITableViewдля получения определенной базы строк в indexPath
item - правильно использовать с UICollectionViewдля получения элемента в разделе. Это свойство доступно только для чтения.
Каждый индекс в indexPath представляет индекс в виде массива дочерних элементов от одного узла в дереве до другого, более глубокого узла.
Например, indexPath 1.4.3.2 задает путь, показанный на рисунке
Различия между indexPath.row and indexPath.item
Как правилоindexPath, обладает двумя свойствами
1 - рядный
2 - элемент
row - свойство используется с UITableViewдля получения определенной базы строк в indexPath
item - правильно использовать с UICollectionViewдля получения элемента в разделе. Это свойство доступно только для чтения.
🔥10❤1
iOS Coordinator pattern
Координатор позволяет нам гибко работать с навигацией в приложении, разрывая тесную связь между контроллерами.
Материалы, которые позволят улучшить ваши навыки по данному паттерну.
Координатор
Координатор2
Координатор3
Координатор позволяет нам гибко работать с навигацией в приложении, разрывая тесную связь между контроллерами.
Материалы, которые позволят улучшить ваши навыки по данному паттерну.
Координатор
Координатор2
Координатор3
❤11🔥2
Cетевой слой в iOS-приложении
Практически любое мобильное приложение взаимодействует с серверами через их API. Перед разработчиком в таком случае стоит задача реализовать сетевой слой своего приложения. Провайдеры того или иного API разрабатывают его интерфейс, зачастую, одинаково, но бывает и так, что API имеет свою специфику.
В данной статье, говорится, как можно построить достаточно гибкий сетевой слой.
Практически любое мобильное приложение взаимодействует с серверами через их API. Перед разработчиком в таком случае стоит задача реализовать сетевой слой своего приложения. Провайдеры того или иного API разрабатывают его интерфейс, зачастую, одинаково, но бывает и так, что API имеет свою специфику.
В данной статье, говорится, как можно построить достаточно гибкий сетевой слой.
🔥9❤3👍1
Всем привет 👋
Собрали для вас фотографии встреч с прошедших выходных.
🔶МИНСК
🔶АЛМАТЫ
🔶НУР-СУЛТАН
🔶МОСКВА
🔶САНКТ-ПЕТЕРБУРГ
🔶РОСТОВ-НА-ДОНУ
🔶УФА
🔶ЕКАТЕРИНБУРГ
🔶КАЗАНЬ
🔶ИЖЕВСК
🔶ВИЛЬНЮС
🔷Полезные ресурсы наших коллег 👉тут👈
Подписывайтесь на наш LinkedIn.
Собрали для вас фотографии встреч с прошедших выходных.
🔶МИНСК
🔶АЛМАТЫ
🔶НУР-СУЛТАН
🔶МОСКВА
🔶САНКТ-ПЕТЕРБУРГ
🔶РОСТОВ-НА-ДОНУ
🔶УФА
🔶ЕКАТЕРИНБУРГ
🔶КАЗАНЬ
🔶ИЖЕВСК
🔶ВИЛЬНЮС
🔷Полезные ресурсы наших коллег 👉тут👈
Подписывайтесь на наш LinkedIn.
👏3❤1
Руководство по локализации для iOS
Локализация — это процесс, когда вы создаете для вашего приложения поддержку других языков. Часто вы сначала делаете приложение с англоязычным интерфейсом и затем локализуете его на другие языки, например, на японский.
Процесс локализации — трудоемкий, а его шаги потихоньку меняются по мере обновления XCode. Этот пост объясняет каждый шаг на основе последней версии XCode (7.3.1).
Локализация — это процесс, когда вы создаете для вашего приложения поддержку других языков. Часто вы сначала делаете приложение с англоязычным интерфейсом и затем локализуете его на другие языки, например, на японский.
Процесс локализации — трудоемкий, а его шаги потихоньку меняются по мере обновления XCode. Этот пост объясняет каждый шаг на основе последней версии XCode (7.3.1).
❤9🔥2
👋 Всем привет!
☕️ Coffee&Code
📆 13 и 14 августа
🍟 Оффлайн встречи мобильных разработчиков в формате дружеской беседы.
Мероприятия совершенно бесплатны,
ждём всех желающих, обсудить разработку, задать вопросы, поделиться опытом и знаниями.
🌆Города в которых пройдут встречи:
📱iOS
📍МИНСК
📍САНКТ-ПЕТЕРБУРГ
📍АЛМАТЫ
📍МОСКВА
📍КАЛИНИНГРАД
📍КАЗАНЬ
📍ВАРШАВА
📍ВИТЕБСК
📍ВИЛЬНЮС
📍БАТУМИ
📍ЕКАТЕРИНБУРГ
🤖ANDROID
📍ЛИПЕЦК
☕️ Coffee&Code
📆 13 и 14 августа
🍟 Оффлайн встречи мобильных разработчиков в формате дружеской беседы.
Мероприятия совершенно бесплатны,
ждём всех желающих, обсудить разработку, задать вопросы, поделиться опытом и знаниями.
🌆Города в которых пройдут встречи:
📱iOS
📍МИНСК
📍САНКТ-ПЕТЕРБУРГ
📍АЛМАТЫ
📍МОСКВА
📍КАЛИНИНГРАД
📍КАЗАНЬ
📍ВАРШАВА
📍ВИТЕБСК
📍ВИЛЬНЮС
📍БАТУМИ
📍ЕКАТЕРИНБУРГ
🤖ANDROID
📍ЛИПЕЦК
Telegram
Coffee&Code | Mobile Community
Традиционный пятничный анонс на выходные 13-14 августа.
🌆Города, в которых на этой неделе пройдут встречи:
iOS:
🍏МИНСК
🍏САНКТ-ПЕТЕРБУРГ
🍏АЛМАТЫ
🍏МОСКВА
🍏КАЛИНИНГРАД
🍏КАЗАНЬ
🍏ВАРШАВА
🍏ВИТЕБСК
🍏ВИЛЬНЮС
🍏БАТУМИ
🍏ЕКАТЕРИНБУРГ
ANDROID:
🤖ЛИПЕЦК
👩💻 Пообщаемся…
🌆Города, в которых на этой неделе пройдут встречи:
iOS:
🍏МИНСК
🍏САНКТ-ПЕТЕРБУРГ
🍏АЛМАТЫ
🍏МОСКВА
🍏КАЛИНИНГРАД
🍏КАЗАНЬ
🍏ВАРШАВА
🍏ВИТЕБСК
🍏ВИЛЬНЮС
🍏БАТУМИ
🍏ЕКАТЕРИНБУРГ
ANDROID:
🤖ЛИПЕЦК
👩💻 Пообщаемся…
👏2❤1
SwiftLint — чистота и порядок в iOS проекте
Думаю, все знают, как бывает непросто поддерживать соблюдение code style и соглашений в iOS-проекте. Сегодня поговорим о том, как автоматизировать этот процесс с помощью утилиты SwiftLint.
SwiftLint — это утилита от разработчиков Realm для автоматической проверки Swift-кода. Утилита содержит набор правил, основанных на GitHub's Swift Style Guide и здравом смысле. Разумеется можно добавлять свои правила. SwiftLint поддерживает интеграцию с Xcode, Appcode, Atom.
Думаю, все знают, как бывает непросто поддерживать соблюдение code style и соглашений в iOS-проекте. Сегодня поговорим о том, как автоматизировать этот процесс с помощью утилиты SwiftLint.
SwiftLint — это утилита от разработчиков Realm для автоматической проверки Swift-кода. Утилита содержит набор правил, основанных на GitHub's Swift Style Guide и здравом смысле. Разумеется можно добавлять свои правила. SwiftLint поддерживает интеграцию с Xcode, Appcode, Atom.
❤8🔥1
Каждый разработчик, независимо от квалификации и типа текущей задачи, постоянно находится в знакомом всем цикле: мы пишем код, запускаем и исправляем. Количество итераций у каждого разное, но делаем мы это ежедневно множество раз.
По данным некоторых исследований, мы в среднем тратим до 60% времени на отладку — и это именно усредненное значение, для кого-то, особенно для начинающих разработчиков, оно может быть ещё больше. Пост призван уменьшить это время и сделать процесс отладки эффективнее и приятнее. Читаем, дебажим
По данным некоторых исследований, мы в среднем тратим до 60% времени на отладку — и это именно усредненное значение, для кого-то, особенно для начинающих разработчиков, оно может быть ещё больше. Пост призван уменьшить это время и сделать процесс отладки эффективнее и приятнее. Читаем, дебажим
❤7🔥1🎉1
Руководство по пользовательскому макету UICollectionView
UICollectionView, представленный в iOS 6, стал одним из самых популярных элементов пользовательского интерфейса среди разработчиков iOS. Что делает его таким привлекательным, так это разделение между уровнями данных и представления, которое зависит от отдельного объекта для обработки макета. Затем макет отвечает за определение размещения и визуальных атрибутов представлений.
В данной статье автор реализует UICollectionView, по примеру приложения Pinterest
В процессе вы узнаете:
1️⃣О пользовательских макетах.
2️⃣Как вычислять и кэшировать атрибуты макета.
3️⃣Как обрабатывать ячейки с динамическим размером.
Приятного чтения!
UICollectionView, представленный в iOS 6, стал одним из самых популярных элементов пользовательского интерфейса среди разработчиков iOS. Что делает его таким привлекательным, так это разделение между уровнями данных и представления, которое зависит от отдельного объекта для обработки макета. Затем макет отвечает за определение размещения и визуальных атрибутов представлений.
В данной статье автор реализует UICollectionView, по примеру приложения Pinterest
В процессе вы узнаете:
1️⃣О пользовательских макетах.
2️⃣Как вычислять и кэшировать атрибуты макета.
3️⃣Как обрабатывать ячейки с динамическим размером.
Приятного чтения!
❤11🔥3👍2
Жизненный цикл приложения
Основная функция
Входной точкой входа в каждом приложении основанном на C является функция main. В iOS приложениях это правильно так же соблюдается. Единственное чем отличается, это то, что в iOS приложении вы не должны писать в функцию main самостоятельно. Xcode создает эту функцию как часть основы для вашего проекта. Правда, в языке Swift такой функции уже не наблюдается.
Основной цикл работы
Основной цикл работы приложения обрабатывает все пользовательские события. Объект UIApplication запускает основной цикл с момента запуска и использует его для обработки событий и обработки изменений в интерфейсе. Как следует из названия, основной цикл выполняется в основном потоке приложения. Такое поведение гарантирует, что события связные с пользователем будут обрабатываться последовательно в том порядке в котором они были получены.
Продолжение, читаем в статье🫶🏻
Основная функция
Входной точкой входа в каждом приложении основанном на C является функция main. В iOS приложениях это правильно так же соблюдается. Единственное чем отличается, это то, что в iOS приложении вы не должны писать в функцию main самостоятельно. Xcode создает эту функцию как часть основы для вашего проекта. Правда, в языке Swift такой функции уже не наблюдается.
Основной цикл работы
Основной цикл работы приложения обрабатывает все пользовательские события. Объект UIApplication запускает основной цикл с момента запуска и использует его для обработки событий и обработки изменений в интерфейсе. Как следует из названия, основной цикл выполняется в основном потоке приложения. Такое поведение гарантирует, что события связные с пользователем будут обрабатываться последовательно в том порядке в котором они были получены.
Продолжение, читаем в статье🫶🏻
🔥8👍3❤2🎉2
MVI в iOS-приложении
Что делать если пишешь код, а в итоге получаешь настолько большой модуль, что полностью теряешь над ним контроль. И всё это добро изменяется со страшным скрипом, расширяется медленно и совсем не покрывается тестами.
В данной статье с примерами рассказываются подходы, способы как избежать этого.
MVI — это просто реализация стейт-машины, которая не сильно завязана на конкретную архитектуру и может быть применима в разных местах приложения.
Что делать если пишешь код, а в итоге получаешь настолько большой модуль, что полностью теряешь над ним контроль. И всё это добро изменяется со страшным скрипом, расширяется медленно и совсем не покрывается тестами.
В данной статье с примерами рассказываются подходы, способы как избежать этого.
MVI — это просто реализация стейт-машины, которая не сильно завязана на конкретную архитектуру и может быть применима в разных местах приложения.
❤3👍3
Что такое правильная архитектура iOS приложения?
Архитектурное решение подбирается индивидуально под каждый проект. Не существует волшебной пилюли, которая подойдет всегда и всем.
От чего же зависит выбор этого самого решения?
Основными факторами влияющими на проектирование архитектуры являются время поддержки проекта и его перспективы. Если проект собирается развиваться и его нужно будет долго поддерживать, то стоит заранее подумать о масштабируемой архитектуре.
MVC, MVVM, MVP… все это лишь UI дизайн паттерны, которые не были созданы для того, чтобы решать задачи всего приложения. Архитектура должна быть гибкой и позволять разработчикам быстро и легко адаптироваться под изменяющуюся окружающую среду.
Архитектура каждого проекта должна быть индивидуальной и зависеть исключительно от поставленных задач. Для мелких и простых проектов высокий уровень абстракции может стать попросту overengineering’ом.
Читать подробно
Архитектурное решение подбирается индивидуально под каждый проект. Не существует волшебной пилюли, которая подойдет всегда и всем.
От чего же зависит выбор этого самого решения?
Основными факторами влияющими на проектирование архитектуры являются время поддержки проекта и его перспективы. Если проект собирается развиваться и его нужно будет долго поддерживать, то стоит заранее подумать о масштабируемой архитектуре.
MVC, MVVM, MVP… все это лишь UI дизайн паттерны, которые не были созданы для того, чтобы решать задачи всего приложения. Архитектура должна быть гибкой и позволять разработчикам быстро и легко адаптироваться под изменяющуюся окружающую среду.
Архитектура каждого проекта должна быть индивидуальной и зависеть исключительно от поставленных задач. Для мелких и простых проектов высокий уровень абстракции может стать попросту overengineering’ом.
Читать подробно
❤6👍2
Протокольно-ориентированное программирование в Swift 5.1
Протоколы — фундаментальное свойство Swift. Они играют важную роль в стандартных библиотеках Swift и являются обычным способом абстракции кода. Во многом они похожи на интерфейсы в других языках программирования.
Протоколы позволяют группировать похожие методы, функции и свойства применительно к классам, структурам и перечислениям. При этом только классы позволяют использовать наследование от базового класса.
Преимущество протоколов в Swift состоит в том, что объект может соответствовать нескольким протоколам.
Ваш код при при использовании такого метода становиться более модульным. Думайте о протоколах как о строительных блоках функционала. Когда вы добавляете новую функциональность объекту, делая его соответствующим некоему протоколу, вы не делаете совершенно новый объект «с нуля», это было бы слишком долго. Вместо этого, вы добавляете разные строительные блоки до тех пор, пока объект не будет готов.
Подробнее можно прочитать в статье:
Протоколы — фундаментальное свойство Swift. Они играют важную роль в стандартных библиотеках Swift и являются обычным способом абстракции кода. Во многом они похожи на интерфейсы в других языках программирования.
Протоколы позволяют группировать похожие методы, функции и свойства применительно к классам, структурам и перечислениям. При этом только классы позволяют использовать наследование от базового класса.
Преимущество протоколов в Swift состоит в том, что объект может соответствовать нескольким протоколам.
Ваш код при при использовании такого метода становиться более модульным. Думайте о протоколах как о строительных блоках функционала. Когда вы добавляете новую функциональность объекту, делая его соответствующим некоему протоколу, вы не делаете совершенно новый объект «с нуля», это было бы слишком долго. Вместо этого, вы добавляете разные строительные блоки до тех пор, пока объект не будет готов.
Подробнее можно прочитать в статье:
❤9👍1🤔1
BottomSheet в iOS 15: возможности UISheetPresentationController
Как BottomSheet был реализован до iOS 15
Раньше приходилось пользоваться сторонними библиотеками или писать собственную реализацию. Оба варианта не лишены недостатков.
Сторонние библиотеки. Проблемой часто становилась ограниченность кастомизации. Решение: форкать репозиторий с библиотекой и вносить нужные изменений. Это наиболее распространённый вариант на проектах, которые мне встречались.
Собственная реализация. Предоставляет полную свободу, но нюансы отнимают много времени. Решение должно быть переиспользуемым: логично разделить его на контроллер-контейнер, который отвечает за представление, и контроллер с контентом, который находится внутри контейнера.
Что предлагает UI Kit в iOS 15. UISheetPresentationController? Читаем в статье
Как BottomSheet был реализован до iOS 15
Раньше приходилось пользоваться сторонними библиотеками или писать собственную реализацию. Оба варианта не лишены недостатков.
Сторонние библиотеки. Проблемой часто становилась ограниченность кастомизации. Решение: форкать репозиторий с библиотекой и вносить нужные изменений. Это наиболее распространённый вариант на проектах, которые мне встречались.
Собственная реализация. Предоставляет полную свободу, но нюансы отнимают много времени. Решение должно быть переиспользуемым: логично разделить его на контроллер-контейнер, который отвечает за представление, и контроллер с контентом, который находится внутри контейнера.
Что предлагает UI Kit в iOS 15. UISheetPresentationController? Читаем в статье
👍9🔥2❤1
Руководство по Push-уведомлениям для iOS
Что такое push-уведомления? Это сообщения, отправляемые в ваше приложение через службу push-уведомлений Apple (APNs), даже если ваше приложение не запущено или телефон находится в спящем режиме. Для чего вы можете использовать push-уведомления? Push-уведомления позволяют разработчикам связаться с пользователями, даже если пользователи не активно используют приложение!
- Отобразите короткое текстовое сообщение, называемое оповещением, которое привлекает внимание к чему-то новому в вашем приложении.
- Воспроизведение звукового уведомления.
- Показать вложение мультимедиа.
Как делать такие уведомления, вы можете прочитать в статьте, где автор подробно рассказывает про реализацию пушей.
Что такое push-уведомления? Это сообщения, отправляемые в ваше приложение через службу push-уведомлений Apple (APNs), даже если ваше приложение не запущено или телефон находится в спящем режиме. Для чего вы можете использовать push-уведомления? Push-уведомления позволяют разработчикам связаться с пользователями, даже если пользователи не активно используют приложение!
- Отобразите короткое текстовое сообщение, называемое оповещением, которое привлекает внимание к чему-то новому в вашем приложении.
- Воспроизведение звукового уведомления.
- Показать вложение мультимедиа.
Как делать такие уведомления, вы можете прочитать в статьте, где автор подробно рассказывает про реализацию пушей.
👍9❤1😱1
Как правильно пользоваться SnapKit?
Для тех кто только учится - это классный туторила, чтобы познать дзен SnapKit, а для других увидеть для себя что-то новое.
В этой статье вы узнаете про ограничения, как использовать правильно данную библиотеку, что такое начальные и конеченые ограничения, и когда лучше использовать левые и правые ограничения, и все это с примерами.
Статья
Для тех кто только учится - это классный туторила, чтобы познать дзен SnapKit, а для других увидеть для себя что-то новое.
В этой статье вы узнаете про ограничения, как использовать правильно данную библиотеку, что такое начальные и конеченые ограничения, и когда лучше использовать левые и правые ограничения, и все это с примерами.
Статья
🔥8👍4❤2🥰1🤔1
Списки захвата в Swift: в чём разница между ссылками weak, strong и unowned?
В данной статье вы узнаете особенности сильных, слабых и бесхозных ссылок, их различия и как правильно применять на практике.
В данной статье вы узнаете особенности сильных, слабых и бесхозных ссылок, их различия и как правильно применять на практике.
👍8🔥2❤1
5 сложных алгоритмов, упрощенных с использованием функций высшего порядка Swift
Как разработчику, очень часто нам приходится иметь дело со сложными алгоритмами, на разработку которых уходят часы или даже дни. Благодаря функциям высшего порядка Swift, таким как map, reduce, filter, и т.д., некоторые из этих сложных алгоритмов теперь могут быть легко решены всего несколькими строками кода.
В этой статье я хотел бы показать вам 5 алгоритмов, которые раньше было сложно реализовать, теперь чрезвычайно легко реализовать, благодаря функциям более высокого порядка в Swift.
Используя функции высшего порядка, мы можем значительно снизить сложность нашего кода, тем самым делая его менее подверженным ошибкам. Самое главное, это значительно упрощает обслуживание нашего кода.
Как разработчику, очень часто нам приходится иметь дело со сложными алгоритмами, на разработку которых уходят часы или даже дни. Благодаря функциям высшего порядка Swift, таким как map, reduce, filter, и т.д., некоторые из этих сложных алгоритмов теперь могут быть легко решены всего несколькими строками кода.
В этой статье я хотел бы показать вам 5 алгоритмов, которые раньше было сложно реализовать, теперь чрезвычайно легко реализовать, благодаря функциям более высокого порядка в Swift.
Используя функции высшего порядка, мы можем значительно снизить сложность нашего кода, тем самым делая его менее подверженным ошибкам. Самое главное, это значительно упрощает обслуживание нашего кода.
❤11👍2😁1🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Анимированный TabBar
В данной статье автор разбирает, как сделать кастомный, аниммированный TabBarController. Много практики, полезного кода, а самое главное что свой материал он группирует на следующие группы:
Классы и модели
Свойства BubbleTabBar
Инициализация и первая прорисовка
Общедоступные методы
Анимация
В данной статье автор разбирает, как сделать кастомный, аниммированный TabBarController. Много практики, полезного кода, а самое главное что свой материал он группирует на следующие группы:
Классы и модели
Свойства BubbleTabBar
Инициализация и первая прорисовка
Общедоступные методы
Анимация
❤8👍2🔥2