Как работает массив в Swift
Массив — это набор элементов одного типа, которые можно устанавливать и извлекать через непрерывный ряд целых чисел, так называемые индексы.
Эти индексы, которые в большинстве компьютерных языков начинаются с нуля, определяют, где в массиве происходит действие.
О массивах нужно знать три вещи:
1. Во-первых, массивы могут содержать практически все, что угодно: числа, строки, объекты и даже другие массивы.
2. Во-вторых, массивы имеют фиксированный размер. Вы не видите этого в Swift, потому что в Swift, когда мы создаем множество, мы не указываем его размер. Но во многих других компьютерных языках при инициализации массива вы должны дать ему начальный размер.
3. В-третьих, у массивов есть уникальная возможность случайного доступа к данным через индекс
Вывод:
1. Массив имеет фиксированный размер.
2. Рандомный доступ О(1).
3. Вставка/ удаление – О(n).
4. Массивы могут сокращаться и расти О(n).
5. Swift проделывает большую работу за нас при создании массива.
#digest
Массив — это набор элементов одного типа, которые можно устанавливать и извлекать через непрерывный ряд целых чисел, так называемые индексы.
Эти индексы, которые в большинстве компьютерных языков начинаются с нуля, определяют, где в массиве происходит действие.
О массивах нужно знать три вещи:
1. Во-первых, массивы могут содержать практически все, что угодно: числа, строки, объекты и даже другие массивы.
2. Во-вторых, массивы имеют фиксированный размер. Вы не видите этого в Swift, потому что в Swift, когда мы создаем множество, мы не указываем его размер. Но во многих других компьютерных языках при инициализации массива вы должны дать ему начальный размер.
3. В-третьих, у массивов есть уникальная возможность случайного доступа к данным через индекс
Вывод:
1. Массив имеет фиксированный размер.
2. Рандомный доступ О(1).
3. Вставка/ удаление – О(n).
4. Массивы могут сокращаться и расти О(n).
5. Swift проделывает большую работу за нас при создании массива.
#digest
👍9❤3👎2🔥1
Ребята, всем привет!
В это воскресенье у нас первое интервью на канале. Гость - Роман Галь. Head of Mobile TradingView
Сделаем круглый стол, и разберем следующие темы:
Как устроиться на работу джуну
• Как преподнести своё решение тимлиду и коллегам
• Как совмещать работу, учёбу и отдых
• Как навести порядок в процессах в команде
В беседе примут участие:
1) Сергей Ирбеткин, iOS Lead РНКБ Банка.
2) Максим Анохин, Senior iOS Санлайт.
3) ну и я тоже поучаствую 🙂
Встречаемся в 17-00 по Москве в воскресенье 26 марта по ссылке.
В это воскресенье у нас первое интервью на канале. Гость - Роман Галь. Head of Mobile TradingView
Сделаем круглый стол, и разберем следующие темы:
Как устроиться на работу джуну
• Как преподнести своё решение тимлиду и коллегам
• Как совмещать работу, учёбу и отдых
• Как навести порядок в процессах в команде
В беседе примут участие:
1) Сергей Ирбеткин, iOS Lead РНКБ Банка.
2) Максим Анохин, Senior iOS Санлайт.
3) ну и я тоже поучаствую 🙂
Встречаемся в 17-00 по Москве в воскресенье 26 марта по ссылке.
👍13🔥6❤3🤡2
За год в российском IT стало на пятую часть меньше вакансий, а количество резюме выросло более чем на треть
По данным Исследовательского центра SuperJob:
1. Зарплаты в IT в Москве за год выросли на 11,8%. В прошлом году рост был рекорд роста в 21.1%.
2. В России за год вакансий стало меньше на 19%. Количество резюме, наоборот, увеличилось на 38%.
3. В Москве за год вакансий стало меньше на 25%, а количество резюме увеличилось на 47%.
И что: IT-сфера сегодня имеет высокий порог вхождения, в приоритете — практический опыт. Зарплаты middle- и senior-разработчиков продолжают расти. При этом снизились зарплатные предложения для junior-специалистов.
Большинство работодателей не публикует требования к образованию в вакансиях для разработчиков. Например, среди вакансий для программистов требование о наличии высшего образования содержат лишь 25—30%. Пожалуй, только госкорпорации и крупные компании с госучастием не спешат отказываться от этого требования.
Однако чтобы построить карьеру в IT и вырасти до должности системного архитектора, руководителя IT-отдела, директора IT-департамента высшее образование по-прежнему — обязательное требование.
#digest #люди
По данным Исследовательского центра SuperJob:
1. Зарплаты в IT в Москве за год выросли на 11,8%. В прошлом году рост был рекорд роста в 21.1%.
2. В России за год вакансий стало меньше на 19%. Количество резюме, наоборот, увеличилось на 38%.
3. В Москве за год вакансий стало меньше на 25%, а количество резюме увеличилось на 47%.
И что: IT-сфера сегодня имеет высокий порог вхождения, в приоритете — практический опыт. Зарплаты middle- и senior-разработчиков продолжают расти. При этом снизились зарплатные предложения для junior-специалистов.
Большинство работодателей не публикует требования к образованию в вакансиях для разработчиков. Например, среди вакансий для программистов требование о наличии высшего образования содержат лишь 25—30%. Пожалуй, только госкорпорации и крупные компании с госучастием не спешат отказываться от этого требования.
Однако чтобы построить карьеру в IT и вырасти до должности системного архитектора, руководителя IT-отдела, директора IT-департамента высшее образование по-прежнему — обязательное требование.
#digest #люди
🔥8👍2👎2👏1
Bottom sheet: Custom transitioning
Современные требования к дизайну мобильных приложений всё чаще подкидывают задачи по отображению контента со сложным поведением. Для его реализации необходимо понимание того, как работают кастомные презентация и транзишены.
Эта статья подробно описывает работу кастомного transitioning delegate для отображения любого контента на экране в виде bottom sheet. Такое отображение подразумевает, что контроллер на экране занимает по высоте только область необходимую и достаточную, чтобы уместить весь содержащийся в нём контент.
#digest
Современные требования к дизайну мобильных приложений всё чаще подкидывают задачи по отображению контента со сложным поведением. Для его реализации необходимо понимание того, как работают кастомные презентация и транзишены.
Эта статья подробно описывает работу кастомного transitioning delegate для отображения любого контента на экране в виде bottom sheet. Такое отображение подразумевает, что контроллер на экране занимает по высоте только область необходимую и достаточную, чтобы уместить весь содержащийся в нём контент.
#digest
👍17🔥3❤2💩2
Я выбрал язык программирования с помощью икигаи, коучей и рефлексии — и это сработало
Для ребят, которые только вкатываются или планируют изучать программирование, обязательно встает вопрос о том, какой язык учить? С чего мне начать? Покупать ли курсы?
Автор данной статьи подробно и интерессно рассказывает о своем пути изучения языка программирования и делится советами, как правильно выстраивать свой путь.
План статьи:
- Просто выбирать язык бесполезно — нужно искать направление
- Метод психолога сократил 9 направлений до 3
- 4 вопроса, которые помогли мне выбрать одно направление
В соотвествии с выбранным направлением, пониманием чем вы хотите заниматься, стоит выбрать язык программирования. Прочтение данной статьи поможет Вам сократить количество направлений до 3–4. После по каждому направлению Вы ответите на четыре вопроса: то ли это направление, которое я люблю; востребовано ли оно в мире, смогу ли я на этом деле заработать и умею ли я этим заниматься.
#люди #развития_себя
Для ребят, которые только вкатываются или планируют изучать программирование, обязательно встает вопрос о том, какой язык учить? С чего мне начать? Покупать ли курсы?
Автор данной статьи подробно и интерессно рассказывает о своем пути изучения языка программирования и делится советами, как правильно выстраивать свой путь.
План статьи:
- Просто выбирать язык бесполезно — нужно искать направление
- Метод психолога сократил 9 направлений до 3
- 4 вопроса, которые помогли мне выбрать одно направление
В соотвествии с выбранным направлением, пониманием чем вы хотите заниматься, стоит выбрать язык программирования. Прочтение данной статьи поможет Вам сократить количество направлений до 3–4. После по каждому направлению Вы ответите на четыре вопроса: то ли это направление, которое я люблю; востребовано ли оно в мире, смогу ли я на этом деле заработать и умею ли я этим заниматься.
#люди #развития_себя
👍12❤2👎2🔥2👏1
Введение в Git Merge и Git Rebase: зачем и когда их использовать
Git Merge и Git Rebase преследуют одну и ту же цель. Они предназначены для интеграции изменений из одной ветки в другую. Хотя конечная цель одинаковая, принципы работы разные.
Некоторые считают, что вы всегда должны использовать Rebase, другие предпочитают Merge. В этом есть свои плюсы и минусы.
Git Merge
Слияние — обычная практика для разработчиков, использующих системы контроля версий. Независимо от того, созданы ли ветки для тестирования, исправления ошибок или по другим причинам, слияние фиксирует изменения в другом месте. Слияние принимает содержимое ветки источника и объединяет их с целевой веткой. В этом процессе изменяется только целевая ветка. История исходных веток остается неизменной.
Плюсы:
- простота
- сохраняет полную историю и хронологический порядок
- поддерживает контекст ветки
Минусы:
- история коммитов может быть заполнена (загрязнена) множеством коммитов;
- отладка с использованием git bisect может стать сложнее.
Git Rebase
Rebase — еще один способ перенести изменения из одной ветки в другую. Rebase сжимает все изменения в один «патч». Затем он интегрирует патч в целевую ветку.
В отличие от слияния, перемещение перезаписывает историю, потому что она передает завершенную работу из одной ветки в другую. В процессе устраняется нежелательная история.
Плюсы:
- Упрощает потенциально сложную историю
- Упрощение манипуляций с единственным коммитом
- Избежание слияния коммитов в занятых репозиториях и ветках
- Очищает промежуточные коммиты, делая их одним коммитом, что полезно для DevOps команд
Минусы:
- Сжатие фич до нескольких коммитов может скрыть контекст
- Перемещение публичных репозиториев может быть опасным при работе в команде
- Появляется больше работы
- Для восстановления с удаленными ветками требуется принудительный пуш. Это приводит к обновлению всех веток, имеющих одно и то же имя, как локально, так и удаленно, и это ужасно.
#digest
Git Merge и Git Rebase преследуют одну и ту же цель. Они предназначены для интеграции изменений из одной ветки в другую. Хотя конечная цель одинаковая, принципы работы разные.
Некоторые считают, что вы всегда должны использовать Rebase, другие предпочитают Merge. В этом есть свои плюсы и минусы.
Git Merge
Слияние — обычная практика для разработчиков, использующих системы контроля версий. Независимо от того, созданы ли ветки для тестирования, исправления ошибок или по другим причинам, слияние фиксирует изменения в другом месте. Слияние принимает содержимое ветки источника и объединяет их с целевой веткой. В этом процессе изменяется только целевая ветка. История исходных веток остается неизменной.
Плюсы:
- простота
- сохраняет полную историю и хронологический порядок
- поддерживает контекст ветки
Минусы:
- история коммитов может быть заполнена (загрязнена) множеством коммитов;
- отладка с использованием git bisect может стать сложнее.
Git Rebase
Rebase — еще один способ перенести изменения из одной ветки в другую. Rebase сжимает все изменения в один «патч». Затем он интегрирует патч в целевую ветку.
В отличие от слияния, перемещение перезаписывает историю, потому что она передает завершенную работу из одной ветки в другую. В процессе устраняется нежелательная история.
Плюсы:
- Упрощает потенциально сложную историю
- Упрощение манипуляций с единственным коммитом
- Избежание слияния коммитов в занятых репозиториях и ветках
- Очищает промежуточные коммиты, делая их одним коммитом, что полезно для DevOps команд
Минусы:
- Сжатие фич до нескольких коммитов может скрыть контекст
- Перемещение публичных репозиториев может быть опасным при работе в команде
- Появляется больше работы
- Для восстановления с удаленными ветками требуется принудительный пуш. Это приводит к обновлению всех веток, имеющих одно и то же имя, как локально, так и удаленно, и это ужасно.
#digest
👍16👎2❤1🔥1
Ребята, всем привет!
В это воскресенье у нас очередное интервью на канале. Гость - Сергей Гнатюк. iOS Developer, основатель Питерского Coffee&Code, а также популяризатор комьюнити.
Мы с ним хотим пообщаться и поспрашивать его за:
• iOS Разработку, учебу и развитие
• Что такое Coffee&Code и будущее сообщества
• Текущее положение на рынке, и что если не iOS.
В беседе примут участие:
1) Сергей Ирбеткин, iOS Lead РНКБ Банка.
2) Максим Анохин, Senior iOS Санлайт.
3) И конечно же я 🙂
Встречаемся в 18-00 по Москве в воскресенье 2 апреля по ссылке.
#интервью #люди
В это воскресенье у нас очередное интервью на канале. Гость - Сергей Гнатюк. iOS Developer, основатель Питерского Coffee&Code, а также популяризатор комьюнити.
Мы с ним хотим пообщаться и поспрашивать его за:
• iOS Разработку, учебу и развитие
• Что такое Coffee&Code и будущее сообщества
• Текущее положение на рынке, и что если не iOS.
В беседе примут участие:
1) Сергей Ирбеткин, iOS Lead РНКБ Банка.
2) Максим Анохин, Senior iOS Санлайт.
3) И конечно же я 🙂
Встречаемся в 18-00 по Москве в воскресенье 2 апреля по ссылке.
#интервью #люди
👍14🔥5❤3🤡2
Доступный MVVM на хакнутых экстеншенах
MVVM успешного программиста должен включать в себя, помимо реализации самого паттерна, решение для управления зависимостями. В яблочном мире паттерн, придуманный в Microsoft, чувствует себя немного иностранцем, и его реализация потребует от вас дополнительных усилий.
В данной статье вы будете на практике рассматривать данный архитектурный паттерн и создавать свое мини приложение, на примере которого рассмотрите все тонкости и подводные камни. Это приложение будет состоять из одного-единственного экрана, отображающего список заказов.
#digest
MVVM успешного программиста должен включать в себя, помимо реализации самого паттерна, решение для управления зависимостями. В яблочном мире паттерн, придуманный в Microsoft, чувствует себя немного иностранцем, и его реализация потребует от вас дополнительных усилий.
В данной статье вы будете на практике рассматривать данный архитектурный паттерн и создавать свое мини приложение, на примере которого рассмотрите все тонкости и подводные камни. Это приложение будет состоять из одного-единственного экрана, отображающего список заказов.
#digest
👍7🥴5👎2❤1🔥1
Шаблон координатора с TabBar контроллером
Шаблон координатора - это шаблон в iOS, отвечающий за управление потоками приложений и навигацию между ViewControllers. Это помогает сделать навигационные потоки более управляемыми и более многократно используемыми, а также позволяет нам настраивать их по мере необходимости.
В данной статье автор показывает как можно это реализовать, используя наиболее распространенные потоки: поток входа и основной поток(который включает TabBar контроллер). Используя координатор, мы можем определять потоки приложений и управлять навигацией между ViewController. Читать и смотреть код, в данной статье
#digest
Шаблон координатора - это шаблон в iOS, отвечающий за управление потоками приложений и навигацию между ViewControllers. Это помогает сделать навигационные потоки более управляемыми и более многократно используемыми, а также позволяет нам настраивать их по мере необходимости.
В данной статье автор показывает как можно это реализовать, используя наиболее распространенные потоки: поток входа и основной поток(который включает TabBar контроллер). Используя координатор, мы можем определять потоки приложений и управлять навигацией между ViewController. Читать и смотреть код, в данной статье
#digest
👍16❤2🥴2🔥1
Как написать свой первый модульный тест
Если вы задумывались о написании тестов в вашем приложении, значит пришли к пониманию необходимости тестов, а это залог качества написанного вами кода и забота о клиентах использующих ваши приложения.
И всё же, зачем нужны тесты?
Опишу самые, на мой взгляд, важные причины:
– при написании тестов вы продумываете все возможные варианты и ситуации, которые могут произойти в приложении, тем самым тестируете все эти подходы и исключаете возможные ошибки на «проде». Как простой пример: функция, выполняющая математическую операцию, должна выдавать определённый результат, но если посчитать руками, то вы обнаруживаете разницу, от которой можно обезопасится тестами
– в момент написания нового функционала (либо вы вернулись к проекту через длительный промежуток времени) проще всего запустить тесты и убедиться в том, что старый функционал по прежнему отрабатывает корректно
– ну и конечно, это экономия времени в будущем, особенно если ваш проект не маленький, а амбициозный и с долгосрочными планами
📖 В этой статье объясняется, что для написание тестов необходимо сделать.
#digest
Если вы задумывались о написании тестов в вашем приложении, значит пришли к пониманию необходимости тестов, а это залог качества написанного вами кода и забота о клиентах использующих ваши приложения.
И всё же, зачем нужны тесты?
Опишу самые, на мой взгляд, важные причины:
– при написании тестов вы продумываете все возможные варианты и ситуации, которые могут произойти в приложении, тем самым тестируете все эти подходы и исключаете возможные ошибки на «проде». Как простой пример: функция, выполняющая математическую операцию, должна выдавать определённый результат, но если посчитать руками, то вы обнаруживаете разницу, от которой можно обезопасится тестами
– в момент написания нового функционала (либо вы вернулись к проекту через длительный промежуток времени) проще всего запустить тесты и убедиться в том, что старый функционал по прежнему отрабатывает корректно
– ну и конечно, это экономия времени в будущем, особенно если ваш проект не маленький, а амбициозный и с долгосрочными планами
📖 В этой статье объясняется, что для написание тестов необходимо сделать.
#digest
👍6🔥2🤮2❤1
Ребята, всем привет! 😊
В это воскресенье у нас новое интервью на канале. Гость - Станислав Сидорюк СTO at Drogerie retail. Это будет первое интервью на ютубе с СТО(это не точно😅)
Мы с ним хотим пообщаться и поспрашивать его за:
• Кто же такой СТО и какую роль в разработке он выполняет?
• Что нужно, чтобы стать СТО?
• Про командообразование, мотивацию и процессы.
В беседе примут участие:
1) Сергей Ирбеткин, iOS Lead РНКБ Банка.
2) Максим Анохин, Senior iOS Санлайт.
3) Даниил Димов, iOS Dev at Улыбка Радуги.
Встречаемся в 18-00 по Москве в воскресенье 9 апреля по ссылке.
#интервью #люди
В это воскресенье у нас новое интервью на канале. Гость - Станислав Сидорюк СTO at Drogerie retail. Это будет первое интервью на ютубе с СТО(это не точно😅)
Мы с ним хотим пообщаться и поспрашивать его за:
• Кто же такой СТО и какую роль в разработке он выполняет?
• Что нужно, чтобы стать СТО?
• Про командообразование, мотивацию и процессы.
В беседе примут участие:
1) Сергей Ирбеткин, iOS Lead РНКБ Банка.
2) Максим Анохин, Senior iOS Санлайт.
3) Даниил Димов, iOS Dev at Улыбка Радуги.
Встречаемся в 18-00 по Москве в воскресенье 9 апреля по ссылке.
#интервью #люди
👍14🔥4👎2👏2❤1🥰1
Практический пример создания View-компонента на SwiftUI
В этой статье пошаговое руководство как создать собственный Custom View для городов, используя Sruct, Computed Property и несколько функций, чтобы рассчитать количество лайков и поездок. Вы можете адаптировать код по себя, и попробовать видоизменить его.
#digest
В этой статье пошаговое руководство как создать собственный 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 #люди
Senior iOS-разработчик red_mad_robot Аня Кочешкова рассказала, чем отличаются три менеджера зависимостей, в каких случаях и для каких задач подойдёт тот или иной. Аня подробно объяснила, что такое семантическое версионирование, как устроены модули кода и в чём разница между динамическими и статическими библиотеками. Материал будет полезен джунам, которые только начали погружаться в разработку.
Head of Android red_mad_robot Central Asia Влад Бауэр поделился опытом, как решил нехватку iOS-разработчиков на одном из внутренних проектов. Он придумал решение: пошарил часть кода и перенёс его в Kotlin Multiplatform Mobile. Спойлер: у Влада получилось, и теперь он рассказывает о нюансах, с которыми ему пришлось столкнуться.
Источник канал
#digest #люди
👍7🔥3❤2👎2
Внимание! Доклад по Async/await
В это воскресенье я проведу доклад на тему Async/await
В докладе будет:
• Реализация Async/await на реальных проектах.
• Разберем все особенности данной фичи.
• Какие подводные камни мы можем ожидать, используя Async/await.
И в конце позадаем вопросы...😊
Встречаемся в 18-00 по Москве в воскресенье 16 апреля по ссылке
#digest #доклад
В это воскресенье я проведу доклад на тему Async/await
В докладе будет:
• Реализация Async/await на реальных проектах.
• Разберем все особенности данной фичи.
• Какие подводные камни мы можем ожидать, используя Async/await.
И в конце позадаем вопросы...😊
Встречаемся в 18-00 по Москве в воскресенье 16 апреля по ссылке
#digest #доклад
👍29🔥7❤6👎2
SwiftFormat: форматирование кода Swift
SwiftFormat — библиотека и инструмент командной строки для реформатирования кода Swift. SwiftFormat выходит за рамки того, что можно ожидать от форматера кода. В дополнение к корректировке пробелов он может вставлять или удалять неявные self, удалять лишние скобки и исправлять многие другие отклонения от стандартных идиом Swift.
Многие программисты предпочитают свой стиль форматирования кода, а другие, кажется, совершенно не замечают существующих в проекте соглашений о форматировании (к негодованию своих коллег). При совместной работе над проектом может быть полезно договориться об общем стиле кодирования, но применение этого стиля вручную утомительно, чревато ошибками и может привести к спорам, если некоторые участники воспринимают его более серьезно, чем другие. Наличие инструмента для автоматического внедрения общего стиля устраняет эти проблемы и позволяет сосредоточиться на поведении кода, а не на его представлении.
#digest
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
В этом руководстве, которое состоит из нескольких статей, автор статьи продемонстрирует, как добавлять покупки в приложение без лишних проблем, начиная с настройки покупок в App Store Connect и заканчивая обработкой покупок в приложении с примерами исходного кода.
IAP позволяет разработчикам взимать плату с пользователей за определенную функциональность или контент во время использования приложения.
Внедрение IAP требует, чтобы приложение использовало StoreKit API на устройстве. StoreKit управляет всеми коммуникациями с серверами Apple iTunes для получения информации о продукте и выполнения транзакций. Профиль подготовки должен быть настроен для IAP, а информация о продукте должна быть введена в App Store Connect.
#digest
👍14❤4👎2🔥1
Цикломатическая сложность в Swift
Цикломатическая сложность — это важный аспект качества кода, который может повлиять на читаемость, сопровождаемость и тестируемость программы. Понимая и измеряя цикломатическую сложность в коде, разработчики могут повысить качество и эффективность своей работы.
Чем выше цикломатическая сложность, тем сложнее поток управления в приложении. Когда мы разрабатываем программное обеспечение, мы всегда стремимся к наименьшей сложности, чтобы обеспечить хорошую сопровождаемость кода.
Высокая цикломатическая сложность может сделать код более трудным для чтения, понимания и сопровождения. Это может привести к тому, что код будет сложнее тестировать, отлаживать и модифицировать. Высокая сложность может увеличить вероятность ошибок в коде, исправление которых может быть дорогостоящим.
Снижая цикломатическую сложность программы, разработчики могут облегчить понимание, сопровождение и тестирование кода, что в конечном итоге приведет к уменьшению количества ошибок и повышению эффективности разработки.
В Swift для измерения цикломатической сложности разработчики могут использовать такие инструменты, как встроенный статический анализатор Xcode или инструменты сторонних разработчиков, например SwiftLint.
Чтобы уменьшить цикломатическую сложность в Swift, разработчики могут использовать несколько приемов. Один из распространенных методов — упрощение потока управления путем использования защитных операторов вместо вложенных операторов if. Это может сделать код более читабельным и сократить количество ветвлений в коде.
Другая техника заключается в рефакторизации сложных методов или функций на более мелкие, более управляемые части. Это позволяет разбить сложный код на более мелкие и понятные фрагменты, которые легче тестировать и поддерживать.
#digest
Цикломатическая сложность — это важный аспект качества кода, который может повлиять на читаемость, сопровождаемость и тестируемость программы. Понимая и измеряя цикломатическую сложность в коде, разработчики могут повысить качество и эффективность своей работы.
Чем выше цикломатическая сложность, тем сложнее поток управления в приложении. Когда мы разрабатываем программное обеспечение, мы всегда стремимся к наименьшей сложности, чтобы обеспечить хорошую сопровождаемость кода.
Высокая цикломатическая сложность может сделать код более трудным для чтения, понимания и сопровождения. Это может привести к тому, что код будет сложнее тестировать, отлаживать и модифицировать. Высокая сложность может увеличить вероятность ошибок в коде, исправление которых может быть дорогостоящим.
Снижая цикломатическую сложность программы, разработчики могут облегчить понимание, сопровождение и тестирование кода, что в конечном итоге приведет к уменьшению количества ошибок и повышению эффективности разработки.
В Swift для измерения цикломатической сложности разработчики могут использовать такие инструменты, как встроенный статический анализатор Xcode или инструменты сторонних разработчиков, например SwiftLint.
Чтобы уменьшить цикломатическую сложность в Swift, разработчики могут использовать несколько приемов. Один из распространенных методов — упрощение потока управления путем использования защитных операторов вместо вложенных операторов if. Это может сделать код более читабельным и сократить количество ветвлений в коде.
Другая техника заключается в рефакторизации сложных методов или функций на более мелкие, более управляемые части. Это позволяет разбить сложный код на более мелкие и понятные фрагменты, которые легче тестировать и поддерживать.
#digest
👍11🤯3👎2🔥2❤1
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 #собеседования
Большой цикл статей для подготовки к собесам по 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🔥7❤3🤮2
📷 Пишем камеру на AVFoundation
В это воскресенье Эмиль Имамов, iOS разработчик продукта "3D Платформа" поведает нас в мир библиотеки AVFoundation и расскажет, как с ним работать на реальных проектах.
Так же у Эмиля написана статья на habr. Ознакомиться перед докладом можно по ссылке.
По традиции, в конце пообщаемся за разработку, зададим вопросы подписчиков и многое многое другое. Посмотреть можно по ссылке.
Встречаемся завтра, в 18-00 по Москве.
#digest #доклад
В это воскресенье Эмиль Имамов, iOS разработчик продукта "3D Платформа" поведает нас в мир библиотеки AVFoundation и расскажет, как с ним работать на реальных проектах.
Так же у Эмиля написана статья на habr. Ознакомиться перед докладом можно по ссылке.
По традиции, в конце пообщаемся за разработку, зададим вопросы подписчиков и многое многое другое. Посмотреть можно по ссылке.
Встречаемся завтра, в 18-00 по Москве.
#digest #доклад
👍17🔥4🤮2❤1