Управление памятью в Swift
Помимо места, используемого для загрузки своего собственного байт-кода, программа использует при работе две области в оперативной памяти — стек (stack) и кучу (heap).
Стек
Stack — Переменные, выделенные в стеке, хранятся непосредственно в памяти, и доступ к этой памяти очень быстрый, и ее выделение определяется при компиляции программы.
Куча
Куча используется для динамического выделения памяти, однако, в отличие от стека, данные в куче первым делом требуется найти с помощью «оглавления». Можно представить, что куча это такая большая многоуровневая библиотека, в которой, следуя определённым инструкциям, можно найти необходимую книгу.
Подробное описание про память, советую прочитать данную статью
Помимо места, используемого для загрузки своего собственного байт-кода, программа использует при работе две области в оперативной памяти — стек (stack) и кучу (heap).
Стек
Stack — Переменные, выделенные в стеке, хранятся непосредственно в памяти, и доступ к этой памяти очень быстрый, и ее выделение определяется при компиляции программы.
Куча
Куча используется для динамического выделения памяти, однако, в отличие от стека, данные в куче первым делом требуется найти с помощью «оглавления». Можно представить, что куча это такая большая многоуровневая библиотека, в которой, следуя определённым инструкциям, можно найти необходимую книгу.
Подробное описание про память, советую прочитать данную статью
❤12👍3
Как упростить вёрстку интерфейса при помощи UIStackView
UIStackView - автоматический, скомпонованный объект, из него легко сделать адаптивный дизайн.
Представление стека использует автоматическую компоновку для позиционирования и размера упорядоченных представлений. Представление стека выравнивает первое и последнее упорядоченное представление с его краями вдоль оси стека. В горизонтальном стеке это означает, что передний край первого упорядоченного представления прикрепляется к переднему краю стека, а задний край последнего упорядоченного представления прикрепляется к заднему краю стека. В вертикальных стеках верхний и нижний края прикрепляются к верхнему и нижнему краям стека соответственно.
Разобрать UIStackView с примерами - можно в этой статье.
UIStackView - автоматический, скомпонованный объект, из него легко сделать адаптивный дизайн.
Представление стека использует автоматическую компоновку для позиционирования и размера упорядоченных представлений. Представление стека выравнивает первое и последнее упорядоченное представление с его краями вдоль оси стека. В горизонтальном стеке это означает, что передний край первого упорядоченного представления прикрепляется к переднему краю стека, а задний край последнего упорядоченного представления прикрепляется к заднему краю стека. В вертикальных стеках верхний и нижний края прикрепляются к верхнему и нижнему краям стека соответственно.
Разобрать UIStackView с примерами - можно в этой статье.
👍7🔥3❤1👏1
Структуры против Классов
1. В массив лучше всего класть структуры.
2 .Если хочется создать массив из классов, то лучше выбрать обычный Array, так как ContiguousArray предоставляет преимущества редко, и они не сильно высоки.
3. Inline оптимизация ускоряет работу, не отключайте её.
4. Доступ к элементам Array всегда быстрее, чем доступ к элементам ContiguousArray.
5. Структуры всегда быстрее классов (если конечно включить Whole module optimization или подобную оптимизацию).
6. При передаче объекта в функцию и вызове его свойства, начиная с третьего, структуры быстрее классов.
7. При передаче значения в функцию, написаную для Generic и Protocol, Generic будет быстрее.
8. При наследовании классов
скорость вызова функции деградирует.
9. Переменные с пометкой final работают медленнее обычных перечных.
10. Если функция принимает объект, объединяющий протоколом несколько объектов, то он будет быстро работать, если в нём хранится всего одно свойство, и сильно деградировать при добавлении большего количества свойств.
Статья:
1. В массив лучше всего класть структуры.
2 .Если хочется создать массив из классов, то лучше выбрать обычный Array, так как ContiguousArray предоставляет преимущества редко, и они не сильно высоки.
3. Inline оптимизация ускоряет работу, не отключайте её.
4. Доступ к элементам Array всегда быстрее, чем доступ к элементам ContiguousArray.
5. Структуры всегда быстрее классов (если конечно включить Whole module optimization или подобную оптимизацию).
6. При передаче объекта в функцию и вызове его свойства, начиная с третьего, структуры быстрее классов.
7. При передаче значения в функцию, написаную для Generic и Protocol, Generic будет быстрее.
8. При наследовании классов
скорость вызова функции деградирует.
9. Переменные с пометкой final работают медленнее обычных перечных.
10. Если функция принимает объект, объединяющий протоколом несколько объектов, то он будет быстро работать, если в нём хранится всего одно свойство, и сильно деградировать при добавлении большего количества свойств.
Статья:
❤12👍5
Как персонализировать и использовать UISlider в Swift
Данная статья разделена на две части: первая о том, как сделать ваш слайдер немного отличающимся от дефолтного слайдера, костамизировать его. Вторая часть, как получить доступ и использовать его значения.
Cтатья про кастомный UISlider
Данная статья разделена на две части: первая о том, как сделать ваш слайдер немного отличающимся от дефолтного слайдера, костамизировать его. Вторая часть, как получить доступ и использовать его значения.
Cтатья про кастомный UISlider
🔥5👍2❤1
Что почитать начинающему iOS разработчику?
Язык Swift прост, понятен и отлично подойдет как новичкам, так и опытным программистам. Чтобы начать писать код, вам потребуются только эта книга, компьютер и желание учиться. Все базовые концепции программирования и основы синтаксиса объясняются доступным языком, поэтому если вы никогда раньше не занимались разработкой, то эта книга – отличный старт. Теория чередуется с практическими примерами и кодом – так вы сразу сможете связать абстрактные понятия с реальными ситуациями. В каждой главе вас ждут тесты и домашние задания, которые помогут закрепить материал.
#книга
Язык Swift прост, понятен и отлично подойдет как новичкам, так и опытным программистам. Чтобы начать писать код, вам потребуются только эта книга, компьютер и желание учиться. Все базовые концепции программирования и основы синтаксиса объясняются доступным языком, поэтому если вы никогда раньше не занимались разработкой, то эта книга – отличный старт. Теория чередуется с практическими примерами и кодом – так вы сразу сможете связать абстрактные понятия с реальными ситуациями. В каждой главе вас ждут тесты и домашние задания, которые помогут закрепить материал.
#книга
👍28❤1
Как работает UIScrollView
Статья о том, как работает UIScrollView, как реализованы замедление, баунс, spring animation и rubber band effect и как, применяя эти знания для собственных UI-компонентов, можно добиться естественной анимации и отзывчивого интерфейса в приложениях.
Статья о том, как работает UIScrollView, как реализованы замедление, баунс, spring animation и rubber band effect и как, применяя эти знания для собственных UI-компонентов, можно добиться естественной анимации и отзывчивого интерфейса в приложениях.
🔥8👍5👏3❤1
‘Factory Method’ Pattern in Swift
Шаблон «Фабричный метод» — это творческий шаблон проектирования, который абстрагирует процесс создания экземпляров. Шаблон создания контролирует, кто создает объект и что/как/когда он создается.
Этот шаблон следует использовать, когда у нас есть много разных объектов, которые мы используем по-разному. Их экземпляры могут быть сложными и требовать вычислений для их создания. Шаблон «Фабричный метод» инкапсулирует их экземпляры, чтобы упростить их создание в разных местах
Этот шаблон следует использовать, когда логика создания и создание экземпляров выполняются клиентом. Клиент тесно связан с объектом, если его тип используется в его классе. Перемещая логику и инстанцирование объектов в подкласс, мы защищаем код от изменений API. Если к конкретному классу и его API добавляются какие-то модификации, на клиентский код не влияют изменения, которые ему не нужны. Реализуя интерфейс, фабричный метод возвращает абстракцию, а не конкретный тип, поэтому мы защищаем код от деталей реализации.
Шаблон «Фабричный метод» — это творческий шаблон проектирования, который абстрагирует процесс создания экземпляров. Шаблон создания контролирует, кто создает объект и что/как/когда он создается.
Этот шаблон следует использовать, когда у нас есть много разных объектов, которые мы используем по-разному. Их экземпляры могут быть сложными и требовать вычислений для их создания. Шаблон «Фабричный метод» инкапсулирует их экземпляры, чтобы упростить их создание в разных местах
Этот шаблон следует использовать, когда логика создания и создание экземпляров выполняются клиентом. Клиент тесно связан с объектом, если его тип используется в его классе. Перемещая логику и инстанцирование объектов в подкласс, мы защищаем код от изменений API. Если к конкретному классу и его API добавляются какие-то модификации, на клиентский код не влияют изменения, которые ему не нужны. Реализуя интерфейс, фабричный метод возвращает абстракцию, а не конкретный тип, поэтому мы защищаем код от деталей реализации.
👍5❤4🔥3😁1🤯1
Большой источник информации про UI в UIKit.
Мы привыкли воспринимать UI как визуальную составляющую, но ведь UI – это User Interface. Так вот, интерфейс – это то, с помощью чего пользователь взаимодействует с нашим приложением. В случае с графическим интерфейсом пользователь его видит и воспринимает информацию. Однако он не интерактивный и, когда пользователь хочет взаимодействовать с ним, он использует другие интерфейсы: тачскрин, клавиатуру или мышку. Да, это тоже интерфейсы. И UIKit как раз таки отвечает не за графический интерфейс, а за распознавание пользовательских жестов и их обработку.
В данной статье, вы улучшите свои знания про Core Graphics & Metal, Responder Chain, UIView и CALayer, frame/bounds, Content, Coordinate System, Visual Effects, Shadow, Mask, Scale.
Мы привыкли воспринимать UI как визуальную составляющую, но ведь UI – это User Interface. Так вот, интерфейс – это то, с помощью чего пользователь взаимодействует с нашим приложением. В случае с графическим интерфейсом пользователь его видит и воспринимает информацию. Однако он не интерактивный и, когда пользователь хочет взаимодействовать с ним, он использует другие интерфейсы: тачскрин, клавиатуру или мышку. Да, это тоже интерфейсы. И UIKit как раз таки отвечает не за графический интерфейс, а за распознавание пользовательских жестов и их обработку.
В данной статье, вы улучшите свои знания про Core Graphics & Metal, Responder Chain, UIView и CALayer, frame/bounds, Content, Coordinate System, Visual Effects, Shadow, Mask, Scale.
👍9🔥4❤1
Как устроен счетчик ссылок в Swift
В процессе выполнения приложения в памяти создается множество объектов. И если продолжать создавать объекты и не удалять лишние, тогда память закончится. Чтобы этого избежать, нужен алгоритм освобождения памяти. Главный его принцип – это отслеживание достижимости объекта. То есть, когда на объект есть ссылки, то он считается достижимым. А пока на объект хоть кто-то ссылается – значит его нельзя удалять из памяти. И как только пропадет последняя ссылка, то объект уничтожается и освобождается занятая им память.
Для отслеживания доступности объекта нужен алгоритм отслеживания активных ссылок. В Swift этот алгоритм реализован в виде механизма автоматического подсчета ссылок. Automatic Reference Counter, или сокращенно ARC – появился еще со времен Objective-C. В его основе счетчик ссылок, который есть у каждого объекта класса.
Более глубже и подробно про ARC, виды ссылок, side table, жизненный цикл объекта, битовое поле можно прочитать в данной статье
В процессе выполнения приложения в памяти создается множество объектов. И если продолжать создавать объекты и не удалять лишние, тогда память закончится. Чтобы этого избежать, нужен алгоритм освобождения памяти. Главный его принцип – это отслеживание достижимости объекта. То есть, когда на объект есть ссылки, то он считается достижимым. А пока на объект хоть кто-то ссылается – значит его нельзя удалять из памяти. И как только пропадет последняя ссылка, то объект уничтожается и освобождается занятая им память.
Для отслеживания доступности объекта нужен алгоритм отслеживания активных ссылок. В Swift этот алгоритм реализован в виде механизма автоматического подсчета ссылок. Automatic Reference Counter, или сокращенно ARC – появился еще со времен Objective-C. В его основе счетчик ссылок, который есть у каждого объекта класса.
Более глубже и подробно про ARC, виды ссылок, side table, жизненный цикл объекта, битовое поле можно прочитать в данной статье
👍12❤2🔥1
Пишем свой сетевой слой на Swift: протокол-ориентированный подход
Сейчас практически 100% приложений используют работу с сетью, поэтому вопрос организации и использования сетевого слоя встает перед каждым. Есть два основных подхода к решению этой проблемы, это либо использование сторонних библиотек, либо собственная реализация сетевого слоя. В данной статье расматривается именно второй вариант, реализуется сетевой слой с использованием всех последних возможностей языка, применяя протоколы и перечисления. Это избавляет проект от лишних зависимостей в виде дополнительных библиотек. Те, кто хоть раз видел Moya, сразу узнают множество схожих деталей в реализации и использовании, так оно и есть, не трогая Moya и Alamofire.
Статья для просмотра
Сейчас практически 100% приложений используют работу с сетью, поэтому вопрос организации и использования сетевого слоя встает перед каждым. Есть два основных подхода к решению этой проблемы, это либо использование сторонних библиотек, либо собственная реализация сетевого слоя. В данной статье расматривается именно второй вариант, реализуется сетевой слой с использованием всех последних возможностей языка, применяя протоколы и перечисления. Это избавляет проект от лишних зависимостей в виде дополнительных библиотек. Те, кто хоть раз видел Moya, сразу узнают множество схожих деталей в реализации и использовании, так оно и есть, не трогая Moya и Alamofire.
Статья для просмотра
🔥12👍5❤2
Создание Custom BottomSheet
В данной статье происходит реализация создания кастомного BottomSheet c реализацией распознования жестов, ограничения движения и добавление анимации при завершения касания.
В данной статье происходит реализация создания кастомного BottomSheet c реализацией распознования жестов, ограничения движения и добавление анимации при завершения касания.
👍5❤3🔥3
iOS Run Loop: Что? Когда? Зачем?
Run Loop (цикл исполнения) является механизмом, который позволяет потокам обрабатывать события (events) бесконечно в любое время.
После того, как поток выполнит эту функцию, он будет пребывать в цикле “прием сообщения -> ожидание -> обработка -> спячка до следующего сообщения -> прием сообщения” внутри функции до конца этого цикла (например, было передано сообщение завершения), после чего функция завершится возвратом.
Когда следует использовать цикл исполнения?
Cocoa предоставляет код для запуска основного цикла (main loop) программы и автоматического запуска цикла исполнения. Метод запуска UIApplication в программе IOS (или NSApplication в Mac OS X) используется как часть этапа запуска программы. Он запустит основной цикл программы, когда будет завершен ее запуск.
Для вспомогательных же потоков вам самим необходимо
определить, нужны ли им циклы исполнения. Если нужны, то вам придется настроить и запустить их самостоятельно. По умолчанию вам не рекомендуется запускать цикл исполнения для потока ни при каких обстоятельствах. Например, когда вы используете потоки для обработки заранее определенной длительной задачи, вам следует избегать запуска цикла исполнения. Запуск цикла исполнения оправдан только если вы хотите активно взаимодействовать с потоками.
Интересные статьи про Run Loop: статья, статья
Run Loop (цикл исполнения) является механизмом, который позволяет потокам обрабатывать события (events) бесконечно в любое время.
После того, как поток выполнит эту функцию, он будет пребывать в цикле “прием сообщения -> ожидание -> обработка -> спячка до следующего сообщения -> прием сообщения” внутри функции до конца этого цикла (например, было передано сообщение завершения), после чего функция завершится возвратом.
Когда следует использовать цикл исполнения?
Cocoa предоставляет код для запуска основного цикла (main loop) программы и автоматического запуска цикла исполнения. Метод запуска UIApplication в программе IOS (или NSApplication в Mac OS X) используется как часть этапа запуска программы. Он запустит основной цикл программы, когда будет завершен ее запуск.
Для вспомогательных же потоков вам самим необходимо
определить, нужны ли им циклы исполнения. Если нужны, то вам придется настроить и запустить их самостоятельно. По умолчанию вам не рекомендуется запускать цикл исполнения для потока ни при каких обстоятельствах. Например, когда вы используете потоки для обработки заранее определенной длительной задачи, вам следует избегать запуска цикла исполнения. Запуск цикла исполнения оправдан только если вы хотите активно взаимодействовать с потоками.
Интересные статьи про Run Loop: статья, статья
❤6🔥3👍2
Математические основы Auto Layout
Auto Layout — это система верстки. Прежде, чем углубиться в неё, поговорим о современной верстке вообще. Затем займемся Auto Layout — разберемся какую задачу он решает и как это делает. Рассмотрим особенности в имплементации Auto Layout в iOS, и попробуем выработать практические советы, которые могут помочь в работе с ним.
Auto Layout под капотом работают на уровне линейных уравнений. Системы линейных уравнений знакомы нам еще со школы — обозначаются фигурной скобкой, а их решение — уже без. Также у систем линейных уравнений есть сущности, которыми оперирует Auto Layout — ограничения. Обозначаются прямой линией.
Система линейных уравнений особенна тем, что над ней определена масса операций: складывание строк, умножение их на константы и т.д. Эти операции называются линейными преобразованиями, и с их помощью система приводится к произвольной форме.
Прелесть линейных преобразований в том, что они обратимы. Это подводит нас к интересной и довольно тонкой идее, с которой начинается вся современная верстка.
Более подробно читать тут
Auto Layout — это система верстки. Прежде, чем углубиться в неё, поговорим о современной верстке вообще. Затем займемся Auto Layout — разберемся какую задачу он решает и как это делает. Рассмотрим особенности в имплементации Auto Layout в iOS, и попробуем выработать практические советы, которые могут помочь в работе с ним.
Auto Layout под капотом работают на уровне линейных уравнений. Системы линейных уравнений знакомы нам еще со школы — обозначаются фигурной скобкой, а их решение — уже без. Также у систем линейных уравнений есть сущности, которыми оперирует Auto Layout — ограничения. Обозначаются прямой линией.
Система линейных уравнений особенна тем, что над ней определена масса операций: складывание строк, умножение их на константы и т.д. Эти операции называются линейными преобразованиями, и с их помощью система приводится к произвольной форме.
Прелесть линейных преобразований в том, что они обратимы. Это подводит нас к интересной и довольно тонкой идее, с которой начинается вся современная верстка.
Более подробно читать тут
👍13🔥5❤3
Программирование iOS 14
Описание книги
Если вы знакомы с основами Swift, Xcode и фреймворка Cocoa, эта книга предоставляет структурированное объяснение всех основных компонентов реального мира iOS-приложений. Благодаря глубокому изучению и большому количеству примеров кода вы узнаете, как создавать представления, управлять контроллерами представлений и добавлять функции из платформ iOS.
1. Создавайте, упорядочивайте, рисуйте, накладывайте и анимируйте виды, которые реагируют на прикосновение
2. Используйте контроллеры представления для управления несколькими экранами интерфейса
3. Основные классы интерфейса для представлений прокрутки, представлений таблиц, представлений коллекций, текста, всплывающих окон, разделенных представлений, веб-представлений и элементов управления.
4. Погрузитесь в фреймворки для звука, видео, карт и датчиков
Доступ к пользовательским библиотекам: музыка, фотографии, контакты и календарь
5. Изучите дополнительные темы, включая файлы, сети и потоки.
Описание книги
Если вы знакомы с основами Swift, Xcode и фреймворка Cocoa, эта книга предоставляет структурированное объяснение всех основных компонентов реального мира iOS-приложений. Благодаря глубокому изучению и большому количеству примеров кода вы узнаете, как создавать представления, управлять контроллерами представлений и добавлять функции из платформ iOS.
1. Создавайте, упорядочивайте, рисуйте, накладывайте и анимируйте виды, которые реагируют на прикосновение
2. Используйте контроллеры представления для управления несколькими экранами интерфейса
3. Основные классы интерфейса для представлений прокрутки, представлений таблиц, представлений коллекций, текста, всплывающих окон, разделенных представлений, веб-представлений и элементов управления.
4. Погрузитесь в фреймворки для звука, видео, карт и датчиков
Доступ к пользовательским библиотекам: музыка, фотографии, контакты и календарь
5. Изучите дополнительные темы, включая файлы, сети и потоки.
👍28🔥9❤4
Концепция жизни программы
В контексте модульных языков или языков с ООП — программа рождается, когда появляется минимальный модуль/класс. Затем, после этапа написания некоторого программного кода, программа передается компилятору. Компилятор обеспечивает т.н. compile-time — время компиляции. В результате выполнения процесса компиляции мы получаем компилят (то есть непосредственный результат обработки нашего исходного кода). Во время компиляции наш исходный код влияет на работу компилятора по определенным законам, которые выражены в коде компилятора.
После получения компилята, над ним, сразу или отложенно должен быть исполнен процесс связывания. Возникает время загрузки - load - time.
Запуск и дальнейшая работа. Наиболее известные широкой публике этапы. Представлены временем инициализации (init-time) и временем исполнения (run-time). В сущности, результат работы этого этапа жизненного цикла и является обычно непосредственной целью написания программы. Отдельным важным временем жизни программы является посмертное время (death-time), в которое, вопреки распространенным представлениям тоже является частью жизненного цикла программы.
В контексте модульных языков или языков с ООП — программа рождается, когда появляется минимальный модуль/класс. Затем, после этапа написания некоторого программного кода, программа передается компилятору. Компилятор обеспечивает т.н. compile-time — время компиляции. В результате выполнения процесса компиляции мы получаем компилят (то есть непосредственный результат обработки нашего исходного кода). Во время компиляции наш исходный код влияет на работу компилятора по определенным законам, которые выражены в коде компилятора.
После получения компилята, над ним, сразу или отложенно должен быть исполнен процесс связывания. Возникает время загрузки - load - time.
Запуск и дальнейшая работа. Наиболее известные широкой публике этапы. Представлены временем инициализации (init-time) и временем исполнения (run-time). В сущности, результат работы этого этапа жизненного цикла и является обычно непосредственной целью написания программы. Отдельным важным временем жизни программы является посмертное время (death-time), в которое, вопреки распространенным представлениям тоже является частью жизненного цикла программы.
👍10🔥3❤2
iOS Нотификации. Подписка и рассылка
Нотификации в приложении генерируются из-за событий в самом приложении (например, по таймеру) или по сообщению с сервера. Первые называются локальными, а вторые – пуш-нотификациями.
Пуш-нотификации работают через APNs (Apple Push Notification service). Для отправки сообщения пользователю нужно сформировать запрос к серверу APNs. Это делается разными способами.
Через token соединение.
Через соединение с помощью сертификата.
Статья с практическим примером как реализовать разные виды уведомлений.
Нотификации в приложении генерируются из-за событий в самом приложении (например, по таймеру) или по сообщению с сервера. Первые называются локальными, а вторые – пуш-нотификациями.
Пуш-нотификации работают через APNs (Apple Push Notification service). Для отправки сообщения пользователю нужно сформировать запрос к серверу APNs. Это делается разными способами.
Через token соединение.
Через соединение с помощью сертификата.
Статья с практическим примером как реализовать разные виды уведомлений.
👍14❤4🔥2
Хранение данных Core Data.
Используйте Core Data для сохранения постоянных данных вашего приложения для использования в автономном режиме, для кэширования временных данных и для добавления функций отмены в ваше приложение на одном устройстве. Для синхронизации данных на нескольких устройствах в одной учетной записи. iCloud Core Data автоматически отображает вашу схему в контейнере CloudKit.
С помощью редактора моделей данных Core Data вы определяете типы и взаимосвязи ваших данных и создаете соответствующие определения классов. Затем Core Data может управлять экземплярами объектов во время выполнения для обеспечения следующих функций.
Предоставляю вам материал, который поможет пощупать нативный фрейморк от Apple, понять что это и как использовать на практике. В данном материале вы создадите простой To-Do лист без использования сториборда. Хранить данные будете в базе, используя Core Data.
Используйте Core Data для сохранения постоянных данных вашего приложения для использования в автономном режиме, для кэширования временных данных и для добавления функций отмены в ваше приложение на одном устройстве. Для синхронизации данных на нескольких устройствах в одной учетной записи. iCloud Core Data автоматически отображает вашу схему в контейнере CloudKit.
С помощью редактора моделей данных Core Data вы определяете типы и взаимосвязи ваших данных и создаете соответствующие определения классов. Затем Core Data может управлять экземплярами объектов во время выполнения для обеспечения следующих функций.
Предоставляю вам материал, который поможет пощупать нативный фрейморк от Apple, понять что это и как использовать на практике. В данном материале вы создадите простой To-Do лист без использования сториборда. Хранить данные будете в базе, используя Core Data.
❤14👍2
Как вы знаете, толковых источников с iOS контентом не так уж много, поэтому рекомендую обратить внимание на канал нашего коллеги Mobile Native. Там Артём публикует различные материалы, которые будут полезны разного уровня разработчикам.
Вот несколько топовых постов с канала
👉 Instagram System Design
👉 Deadlocks in Swift explained
👉 Concurrency in iOS: GCD
Подписывайтесь → @mobile_native
Вот несколько топовых постов с канала
👉 Instagram System Design
👉 Deadlocks in Swift explained
👉 Concurrency in iOS: GCD
Подписывайтесь → @mobile_native
❤3👍3🔥2🤔1
iOS вопросы на интервью
Время важно. Бесконечный поиск, чтобы попрактиковаться в вопросах интервью для iOS, утомляет и отнимает много времени. Цель этой статьи — собрать как можно больше вопросов для интервью с iOS вместе с ответами, чтобы сэкономить ваше время.
Предлагаю освежить свои знания, а кому-то узнать что-то новое для себя в данной статьте.
Время важно. Бесконечный поиск, чтобы попрактиковаться в вопросах интервью для iOS, утомляет и отнимает много времени. Цель этой статьи — собрать как можно больше вопросов для интервью с iOS вместе с ответами, чтобы сэкономить ваше время.
Предлагаю освежить свои знания, а кому-то узнать что-то новое для себя в данной статьте.
❤21👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Разработка анимации на iOS — восемь примеров интерфейса с кодом
На WWDC 2018 дизайнеры Apple представили доклад под названием «Разработка текучих интерфейсов», в котором раскрыли детали жестового интерфейса IPhone X.
Если вы попытаетесь реализовать эти идеи на практике, то обнаружите пропасть между идеей и тем, как её воплотить
Цель данной статьи — преодолеть эту пропасть, представив рабочий код для всех примеров из презентации.
Что будет в этой статье:
1. Краткое описание презентации «Проектирование текучих интерфейсов».
2. Восемь текучих интерфейсов, теория дизайна, на которой они строятся, и код для их создания.
3. Практические рекомендации для дизайнеров и разработчиков.
На WWDC 2018 дизайнеры Apple представили доклад под названием «Разработка текучих интерфейсов», в котором раскрыли детали жестового интерфейса IPhone X.
Если вы попытаетесь реализовать эти идеи на практике, то обнаружите пропасть между идеей и тем, как её воплотить
Цель данной статьи — преодолеть эту пропасть, представив рабочий код для всех примеров из презентации.
Что будет в этой статье:
1. Краткое описание презентации «Проектирование текучих интерфейсов».
2. Восемь текучих интерфейсов, теория дизайна, на которой они строятся, и код для их создания.
3. Практические рекомендации для дизайнеров и разработчиков.
❤20👍6👏2