Диспетчеризация.
Статья где показана практическая её реализация и отличная теория.
https://habr.com/ru/company/simbirsoft/blog/673636/
Статья где показана практическая её реализация и отличная теория.
https://habr.com/ru/company/simbirsoft/blog/673636/
Хабр
Диспетчеризация в Swift: погружение в теорию и практику
Все iOS-разработчики так или иначе сталкиваются с диспетчеризацией ( Method Dispatch ), но далеко не каждый понимает, как это работает. Зная, как проходит процесс диспетчеризации под капотом...
👍7❤3
Управление памятью — важная тема в Swift и iOS-разработке.
Cуществует множество руководств, объясняющих, когда следует использовать weak self в замыканиях.
Статья говорит о том, когда утечка памяти может произойти, и как её избежать.
https://benoitpasquier.com/weak-self-story-memory-management-closure-swift/
Cуществует множество руководств, объясняющих, когда следует использовать weak self в замыканиях.
Статья говорит о том, когда утечка памяти может произойти, и как её избежать.
https://benoitpasquier.com/weak-self-story-memory-management-closure-swift/
Benoit Pasquier
Weak self, a story about memory management and closure in Swift
Memory management is a big topic in Swift and iOS development. If there are plenty of tutorials explaining when to use weak self with closure, here is a short story when memory leaks can still happen with it.
🔥3👍1
Стек
В любом приложении или сайте есть функция «Отмена». А вы не задумывались как она работает?
Смысл такой: в программе сохраняются предшествующие состояния вашей работы (количество сохраняемых состояний ограничено), причем, они располагаются в памяти в таком порядке: последний сохраненный элемент идет первым.
Здесь и нужно использоваться стек т.к. одним массивом задачу решить не получится.
Лучшая аналогия — высокая стопка книг. Если вам нужна какая-то книга, лежащая около центра стопки, вам сначала придется снять все книги, лежащие выше. Именно так работает принцип LIFO.
В любом приложении или сайте есть функция «Отмена». А вы не задумывались как она работает?
Смысл такой: в программе сохраняются предшествующие состояния вашей работы (количество сохраняемых состояний ограничено), причем, они располагаются в памяти в таком порядке: последний сохраненный элемент идет первым.
Здесь и нужно использоваться стек т.к. одним массивом задачу решить не получится.
Лучшая аналогия — высокая стопка книг. Если вам нужна какая-то книга, лежащая около центра стопки, вам сначала придется снять все книги, лежащие выше. Именно так работает принцип LIFO.
🔥9
Alamofire
Нативный инструмент для обработки данных с сервера - URLSession, но работать с ним немного сложнее, чем хотелось бы. Для облегчения этого процесса существует framework Alamofire — это обвертка над URLSession, которая сильно упрощает жизнь при работе с сервером
Cтатья которая рассказывает как пользоваться данной либой.
https://habr.com/ru/post/330760/
Нативный инструмент для обработки данных с сервера - URLSession, но работать с ним немного сложнее, чем хотелось бы. Для облегчения этого процесса существует framework Alamofire — это обвертка над URLSession, которая сильно упрощает жизнь при работе с сервером
Cтатья которая рассказывает как пользоваться данной либой.
https://habr.com/ru/post/330760/
Хабр
Работа с сервером с помощью Alamofire на Swift
Сразу хочу сказать, данная статья предназначена прежде всего для новичков. Здесь не будет best practice, создание сервисов, репозиториев и прочей оптимизации ко...
👍9
Request
1️⃣Запрос — это объект, содержащий всю необходимую информацию для того, чтобы сервер точно понял, какую информацию вы хотите запросить. Структура запроса может содержать следующие пункты:
2️⃣Header (заголовки запроса) — техническая информация, не имеющая отношения к сути запроса. К хедерам часто относят информацию о модели айфона, версии iOS, текущей версии приложения и т.д.
3️⃣Метод запроса, отражающий то, какие действия вы собираетесь произвести. GET ( получить данные), POST (создание данных), PUT (обновление данных), DELETE (удаление данных) и др.
4️⃣URL (адрес запроса) — адрес, по которому вы собираетесь отправить запрос. Например, чтобы получить список ваших подписчиков VK, нужно отправить запрос по адресу:
Response
Ответ от сервера приходит в формате JSON, который представляет собой совокупность пар ключ-значение.
{
'id':210700286,
'first_name':'Николай',
'last_name':'Иванов'
}
1️⃣Запрос — это объект, содержащий всю необходимую информацию для того, чтобы сервер точно понял, какую информацию вы хотите запросить. Структура запроса может содержать следующие пункты:
2️⃣Header (заголовки запроса) — техническая информация, не имеющая отношения к сути запроса. К хедерам часто относят информацию о модели айфона, версии iOS, текущей версии приложения и т.д.
3️⃣Метод запроса, отражающий то, какие действия вы собираетесь произвести. GET ( получить данные), POST (создание данных), PUT (обновление данных), DELETE (удаление данных) и др.
4️⃣URL (адрес запроса) — адрес, по которому вы собираетесь отправить запрос. Например, чтобы получить список ваших подписчиков VK, нужно отправить запрос по адресу:
Response
Ответ от сервера приходит в формате JSON, который представляет собой совокупность пар ключ-значение.
{
'id':210700286,
'first_name':'Николай',
'last_name':'Иванов'
}
🔥10👍2❤1
Corner Radius, Shadows, and Borders in Swift.
Статья, в которой практически показывается применения данных свойств в языке Swift.
https://www.advancedswift.com/corners-borders-shadows/
Статья, в которой практически показывается применения данных свойств в языке Swift.
https://www.advancedswift.com/corners-borders-shadows/
👍6❤1
🤚🏻Всем привет! Канал EasySwift iOS - это не авторский блог, это про iOS разработку в целом.
💻Здесь мы публикуем только самые лучшие находки на пространстве Интернета, которые помогут вам в разработке.
📔Интересные статьи, лайфхаки, книги, ресурсы про iOS. Все это, в одном месте
📝А если ты креативный разработчик и пишешь свои статьи - присылай их нам, и мы с удовольствием выложим их у себя на канале и отметим автора
Присоединяйся в нашу дружную семью и будем развиваться вместе🧑🏻💻
💻Здесь мы публикуем только самые лучшие находки на пространстве Интернета, которые помогут вам в разработке.
📔Интересные статьи, лайфхаки, книги, ресурсы про iOS. Все это, в одном месте
📝А если ты креативный разработчик и пишешь свои статьи - присылай их нам, и мы с удовольствием выложим их у себя на канале и отметим автора
Присоединяйся в нашу дружную семью и будем развиваться вместе🧑🏻💻
❤14👍3🔥1😁1🤔1😱1
Async/await в Swift 5.5: асинхронность «здорового человека»
Что такое async?
Async означает «асинхронный». Этот термин можно рассматривать как атрибут метода, показывающий, что сам метод выполняет асинхронную работу.
Что такое await?
Await — это ключевое слово, которое будет использоваться для вызова асинхронных методов. Мы можем рассматривать их как лучших друзей в Swift, ведь они никогда не обходятся друг без друга. Например, можно сказать:
«Await ожидает обратного вызова от своего приятеля async».
Как и для чего это использовать - читаем в статье. С вас лайк, за крутую находку.
Что такое async?
Async означает «асинхронный». Этот термин можно рассматривать как атрибут метода, показывающий, что сам метод выполняет асинхронную работу.
Что такое await?
Await — это ключевое слово, которое будет использоваться для вызова асинхронных методов. Мы можем рассматривать их как лучших друзей в Swift, ведь они никогда не обходятся друг без друга. Например, можно сказать:
«Await ожидает обратного вызова от своего приятеля async».
Как и для чего это использовать - читаем в статье. С вас лайк, за крутую находку.
❤12👍4🔥1
Материал про App Store Connect API 👍
Апишка достаточно большая и можно придумать много идей, что же с ней сделать
Автор уже набросал несколько идей:
- Использовать API для приложения, где можно смотреть и отвечать на отзывы в сторе 🔥
- Управлять TestFlight юзерами 👨👩👦👦
- Создать тулзы для быстрой загрузки сейлз репортов 📊
- Юзать для взаимодействия с Xcode Cloud 🤖
Читай в статье
Апишка достаточно большая и можно придумать много идей, что же с ней сделать
Автор уже набросал несколько идей:
- Использовать API для приложения, где можно смотреть и отвечать на отзывы в сторе 🔥
- Управлять TestFlight юзерами 👨👩👦👦
- Создать тулзы для быстрой загрузки сейлз репортов 📊
- Юзать для взаимодействия с Xcode Cloud 🤖
Читай в статье
❤4🔥1
Делегирование в 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