Содержание
Интервью с iOS-разработчиком / Хабр
Павел Плотников
iOS-разработчик в BestDoctor. Преподаватель в OTUS
— Мой путь в ИТ почти 20 лет, начинал с SQL/1С/эникейщика, потом немного .net, немного Java, ГИС, потом несколько лет менеджерская история в разработке, которую я прервал в 2016 году. До этого времени мой путь был скорее хаотичным и не спланированным. Далее я осознанно начал подходить к планированию своей карьеры в ИТ, когда захотел вернуться в разработку. Чтобы возвращение в разработку не сменилось страхами связанными с выгоранием в Enterprise, я захотел заняться мобильной разработкой, которая максимально близка к пользователям, что лично меня сильно вдохновляет. Кроме того, невероятно заряжает на работу возможность использовать то, что ты делаешь. У меня уже были пара устройств от Apple, и мне, субъективно, интерфейс iOS нравился больше Android. Чтобы начать что-то пробовать я купил старый MacBook Air «на максималках», уехал на зимовку на Филиппины, чтобы отойти от менеджерского стресса, и начал разбираться «как там все устроено в этом XCode». Уже почти 5 лет я работаю как iOS-разработчик в лучших банках (Альфа, Сбер) и классном стартапе (БестДоктор) с разными небольшими тимлидскими историями, которые я осознанно стараюсь избегать, чтобы быть сфокусированным на разработке.
— Современная iOS-разработка это прежде всего SwiftUI. Пока эта технология разгоняется (нужно чтобы старые устройства были вытеснены с рынка), но в течении нескольких лет она займет доминирующее положение в простых интерфейсах и приложениях. На текущий момент SwiftUI достаточно изменчив в разных версиях iOS и использовать его в больших проектах может быть рискованным. С помощью SwiftUI Apple сделала универсальной разработку под все свои платформы, по сути остался только web. Не исключаю, что применение SwiftUI для web может стать одним из следующих шагов. Кроме того, очевидно, что разработка сейчас идет в функциональном направлении (Combine). Думаю эта часть разработки займет какую-то нишу и не будет всеобъемлющей. Сам язык Swift также неплохо развивается, чего только стоит механизм async/await, который получил поддержку для iOS 13. 0, что достаточно сильно удивило разработчиков. Также развиваются библиотеки связанные с машинным обучением и дополненной реальностью, но это уже более специализированные темы.
— Apple предлагает фреймворки, которые помогают разрабатывать приложения медицинской направленности. Есть три основных фреймворка — HealthKit, CareKit и ResearchKit. HealthKit предлагает защищенное хранилище для доступа к медицинским данным пользователя. Пользователь может отдельно управлять правами к своим данным для приложений и приложения используют единое хранилище для всех своих данных относящихся к здоровью. CareKit предлагает компоненты для создания приложений для учета и отслеживания лечения («таблеточные» приложения). ResearchKit предназначен для создания приложений для проведения исследований, основанных на опросах пользователей. Фреймворк включает в себя компоненты для создания опросов и различных тестов основанных на датчиках, доступных в устройствах. CareKit и ResearchKit это Open Source фреймворки и любой разработчик может принять участие в их развитии. Кроме того, Apple поддерживает стандарт обмена медицинскими данными FHIR придуманный чтобы разные клиники, врачи, страховые и другие субъекты медицинского рынка могли обмениваться данными о здоровье пациента с помощью одного протокола. На западных рынках Apple может напрямую договаривается с медицинскими организациями и пользователь может получать свои медицинские карты напрямую в свой iPhone на основе протокола FHIR, эти данные хранятся в HealthKit и другие приложения к ним также могут получить доступ. На других рынках эта возможность пока ограничена из-за регуляторных особенностей в каждой стране относительно защиты медицинских данных.
— Самый простой путь — слушать маму с детства. Хорошо учится, надевать шапку, поступить в институт на факультет компьютерной направленности. Если вы достаточно целеустремленны, то даже при минимальных усилиях при стандартном пути рано или поздно вы сами того не осознав окажитесь в ИТ. Но, как правило, жизнь более сложная штука и стандартный путь не для всех. Самый лучший вариант на старте — иметь пример или окружение которое этому способствует. Например знакомый который уже «зашел» и сможет вам рассказать или даже помочь на вашем пути. Хорошо, если это также такие-же люди как вы — ищущие возможности и готовые обмениваться опытом. Я считаю, что окружение имеет большое влияние на успех, и это окружение нужно обязательно найти — реальное или виртуальное. У всех свои способы получения информации и это нормально, что некоторые могут учиться только с помощью чтения документации, другие с роликами на YouTube. Но конечно, в комплексе, самый простой вариант — пойти на курсы, где будет возможность и найти окружение, и получить материалы от практиков, и практиковать то, что изучаете. Также важно найти как можно раньше команду, где вы сможете быстрее развиваться. Найти первую работу в iOS безусловно очень важно, но если это будет команда, где уже есть опытные iOS-разработчики и высокая инженерная культура — это самый лучший вариант.
— Спустя некоторое время работы в ИТ начинают появляться истории более высокого порядка, которые не связаны с заработком. Например, это может быть желание делится чем-то, или желание самому развивать свои софт-навыки связанные с преподаванием. Мир преподавания строится по иному, нежели каждодневная практическая работа. Но при проведении занятий часто возникают незапланированные моменты связанные со своей практикой, и это необычное чувство когда ты можешь сформулировать что-то абсолютно новое на основе своей практики в текущем моменте занятия. Также преподавание структурирует знания не только слушателей, но и преподавателей. Часто перед занятием перетряхиваешь свой опыт так, что возникает другое понимание или появляются собственные инсайты. Еще несколько лет назад слова «преподаватель» и «Павел Плотников» были антонимами. Но чтобы идти дальше в своем развитии, нужно в том числе выходить из комфортной зоны. Кроме того, подготовка к занятиям заставляет закрывать все малейшие белые пятна относящиеся к теме. Это дает невероятный буст в собственных знаниях. Также очень приятно находится в таком крутом сообществе преподавателей, которых ты раньше видел на митапах и конференциях с классными докладами, а теперь им пишешь в чате «сори, завтра не могу тебя заменить». Исходя из моего опыта — преподавание, даже если это не история связанная с призванием, но при осознанном подходе, — дает новые возможности в своем развитии.
— Курс по-максимуму отражает актуальные нововведения предлагаемые Apple. Но программа курса отражает лишь некий остов, который формально покрывает великое множество тем. А основная ценность курса именно в практической направленности исходя из опыта коллег. Именно вопросы и сайд-темы, которые возникают в процессе занятий, по моему мнению, как раз и представляют основную ценность. Основную тему всегда можно узнать из документации или других формальных материалов, а все что вокруг этого с практическим опытом не формализуется через статьи и часто передается только с живым общением или прямым взаимодействием со слушателями.
— Будь я студентом, я бы активно общался с сокурсниками. Думаю сообщество людей с похожими целями это самое классное что может быть. Кроме того, если ты что-то услышал, но не пощупал и не закрепил, то эти данные быстро забываются. Поэтому — домашка. Плюс нужно максимально быстро стараться применять то, что проходишь в своей работе. Твой успех прохождения курса это твоя целеустремленность. Курс даст тебе сертификат об обучении, но он не вытащит тебя за уши в крутые компании.
В крутые компании тебя вытащат твои мечты и усердие. И занятия в данном случае это асфальтовая дорога по которой ты можешь быстро двигаться, а можешь присесть на обочине и забыть куда ты шел в ожидании ковра-самолета, которого не существует. А существует реальность, где нужно постоянно двигаться вперед и развиваться.
Узнать подробнее о курсе «iOS Developer. Professional».
Блог iOS-разработчика – Илья Школьник
Моя совместная разработка в Открытие Digital с командой RedMadRobot научила меня тому, что без общего гайдлайна никуда. Поэтому в данной статье я опишу основные принципы по разработке на Swift, которые мы стараемся соблюдать в нашем совместном проекте.
На самом деле, все просто – это модифицированный гайдлайн от Ray Wenderlich и русифицированная версия от RedMadRobot с некоторыми изменениями.
Оглавление
- Начнем с перфекционизма
- Ширина страницы
- Именование
- Методы
- Булевы
- Префиксы класса
- Делегаты
- Зависимый от типа контекст
- Обобщения (Generics)
- Язык
- Организация кода
- Соответствие протокола
- Неиспользованный код
- Минимальный импорт
- Отступы
- Комментарии
- Классы и структуры
- Использование self
- Вычисляемые свойства
- Использование final
- Объявление функций
- Выражения замыканий
- Типы
- Константы
- Статические методы и свойства типа переменных
- Необязательные значения (Optionals)
- Ленивая инициализация
- Вывод типа
- Синтаксический сахар
- Массивы и словари
- Функции против Методов
- Управление памятью
- Продление срока жизни объекта
- Контроль доступа
- Поток управления
- Золотой путь
- Использование guard
- Обработка guard
- Точки с запятой
- Круглые скобки
- Формат организации и Bundle Identifier
- Ссылки
Начнем с перфекционизма
Как бы это ни звучало банально – всегда старайтесь компилировать свой код без предупреждений (warnings).
Ширина страницы
Установите ширину страницы в 120 символов (Xcode / Preferences / Text Editing / Page guide at column). Это значение рекомендуется включить в соответствующем правиле в SwiftLint. Таким образом, весь код будет умещаться в заданную ширину страницы и будет более читабельным.
Именование
Правильное именование упрощает чтение и понимание кода. Используйте соглашения именования в Swift, описанные в API Design Guidelines. Некоторые ключевые особенности включают:
- Стремитесь к ясности при вызовах
- Выбирайте приоритет ясности перед крайностью
- Используйте camelCase, а не snake_case
- Используйте верхний регистр для типов и протоколов, нижний регистр для всего остального
- Включайте только необходимые слова, при этом избегая лишних
- Используйте именование на основе роли, а не типа
- Иногда давайте расширенную информацию для типов со слабой ссылкой
- Стремитесь к свободному использованию
- Начинайте фабричные методы через “make” (Например,
makeProduct
) - Методы именования:
- методы в форме глагола следуют правилу -ed, -ing для неизменяемого объекта (Например,
sorted
) - методы в форме глагола следуют правилу первой формы для изменяемого объекта (Например,
sort
) - булевы типы должны читаться, как утверждения (Например,
isEnabled
) - протоколы должны описывать существительные (Например, Sphere ->
Spherable
) - протоколы, описывающие возможность, должны заканчиваться в -able или -ible (Например,
Fuckable
)
- методы в форме глагола следуют правилу -ed, -ing для неизменяемого объекта (Например,
- Используйте термины, которые не удивляют экспертов или путают начинающих разработчиков
- Избегайте сокращений
- Именуйте веские причины для выбора имени
- Отдавайте приоритет методам и свойствам, вместо свободных функций
- Используйте аббревиатуры только в верхнем или нижнем регистре (Например,
userID
,isRepresentableAsASCII
,utf8Bytes
) - Давайте одинаковое базовое имя для методов, которые имеют одинаковое значение (Например, не использовать где-то
configurate
, а где-тоsetup
) - Избегайте перегрузок в возвращаемом типе
- Выбирайте само-документируемые имена для параметров
- Маркируйте параметры, если они являются замыканием или кортежем
- Используйте параметры по умолчанию
Методы
Очень важно, когда речь идет о наименовании методов. Чтобы обратиться к имени метода, желательно использовать как можно более простейшую форму:
- Пишите имя метода без параметров (Например,
addTarget
) - Пишите имя метода с метками аргументов (Например,
addTarget(:action:)
) - Пишите полное имя метода с метками и типами аргументов (Например,
addTarget(_: Any?, action: Selector?)
)
В приведенном выше примере с использованием UIGestureRecognizer
вариант 1 более однозначен и предпочтителен.
Совет: Можно использовать панель перехода Xcode для поиска методов с метками аргументов.
Булевы
Для булевых переменных принято использовать вспомогательный глагол в начале.
Рекомендуется:
var isFavoriteCategoryFilled: Bool var hasRoaming: Bool var isBlocked: Bool
Не рекомендуется:
var favoriteCategoryFilled: Bool var roaming: Bool var blocked: Bool
Префиксы класса
Типы Swift автоматически называются модулем, в котором они содержатся, и вы не должны добавлять префикс класса, например DP. Если сталкиваются два имени из разных модулей, вы можете сделать различие, предварительно указав имя типа с именем модуля. Вводите имя модуля только в том случае, если существует вероятность путаницы, которая должна быть крайне редкой.
import SomeModule let myClass = MyModule.UsefulClass()
Делегаты
При создании пользовательских методов делегата первый параметр должен быть параметром делегата (UIKit содержит многочисленные примеры подобного).
Рекомендуется:
func namePickerView(_ namePickerView: NamePickerView, didSelectName name: String) func namePickerViewShouldReload(_ namePickerView: NamePickerView) -> Bool
Не рекомендуется:
func didSelectName(namePicker: NamePickerViewController, name: String) func namePickerShouldReload() -> Bool
Зависимый от типа контекст
Используйте возможности компилятора для вывода более короткого и понятного кода.
Рекомендуется:
let selector = #selector(viewDidLoad) view. backgroundColor = .red let toView = context.view(forKey: .to) let view = UIView(frame: .zero)
Не рекомендуется:
let selector = #selector(ViewController.viewDidLoad) view.backgroundColor = UIColor.red let toView = context.view(forKey: UITransitionContextViewKey.to) let view = UIView(frame: CGRect.zero)
Обобщения (Generics)
Имена обобщений должны быть понятными и в формате UpperCamelCase. Если имя типа не имеет значимой роли, используйте традиционную одиночную прописную букву, такую как T, U или V.
Рекомендуется:
struct Stack<Element> { ... } func write<Target: OutputStream>(to target: inout Target) func swap<T>(_ a: inout T, _ b: inout T)
Не рекомендуется:
struct Stack<T> { ... } func write<target: OutputStream>(to target: inout target) func swap<Thing>(_ a: inout Thing, _ b: inout Thing)
Язык
Возьмите за основу американско-английское правописание в соответствии с API Apple.
Рекомендуется:
let color = "red"
Не рекомендуется:
let colour = "red"
Организация кода
Используйте расширения, чтобы разложить свой код на логические функциональные блоки. Каждое расширение должно быть подписано с помощью // MARK: - Комментарий
, чтобы все было хорошо организовано.
Лучше соблюдать следующую последовательность:
// MARK: - Types // MARK: - Constants // MARK: - IBOutlets // MARK: - Public Properties // MARK: - Private Properties // MARK: - Initializers // MARK: - UIViewController(*) // MARK: - Public methods // MARK: - IBActions // MARK: - Private Methods
(*) Вместо UIViewController
вы должны написать другой суперкласс, от которого вы наследуетесь.
Соответствие протокола
В частности, при добавлении соответствия протокола желательно добавить отдельное расширение для реализации его методов. Это удерживает связанные методы вместе с протоколом и может упростить инструкции для добавления протокола к классу с помощью связанных с ним методов.
Рекомендуется:
class MyViewController: UIViewController { // код класса } // MARK: - UITableViewDataSource extension MyViewController: UITableViewDataSource { // методы датасорса } // MARK: - UIScrollViewDelegate extension MyViewController: UIScrollViewDelegate { // методы делегата }
Не рекомендуется:
class MyViewController: UIViewController, UITableViewDataSource, UIScrollViewDelegate { // все методы }
Это правило не работает в двух случаях:
- Когда вам нужен метод переопределения, который реализован в другом расширении
- Когда вы используете класс с обобщениями и Objective-C протоколами с дополнительными методами (
@objc
не поддерживается в расширениях Generic-классов или классов, которые наследуются от Generic-классов)
Поскольку компилятор не позволяет повторно объявить соответствие протокола в дочернем классе, не всегда требуется повторять группы расширений базового класса. Это совершенно справедливо, если дочерний класс является финальным и переопределяется лишь небольшое число методов. Сохранение группы расширений оставляют на усмотрение автора.
Для наследников UIViewController
можно рассмотреть разложение в отдельные расширения: жизненный цикл, пользовательские аксессоры и IBActions
.
Неиспользованный код
Неиспользованный (мертвый) код, включая код шаблона Xcode и комментарии к заполнению, должен быть удален. За исключением того, что вы пишете учебник, где даете указание читателю использовать прокомментированный код.
Методы, непосредственно не связанные с учебником, реализация которых просто вызывает суперкласс, также должны быть удалены. Сюда входят любые пустые/неиспользуемые методы UIApplicationDelegate
.
Рекомендуется:
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return Database.contacts. count }
Не рекомендуется:
override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } override func numberOfSections(in tableView: UITableView) -> Int { // #warning Incomplete implementation, return the number of sections return 1 } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { // #warning Incomplete implementation, return the number of rows return Database.contacts.count }
Минимальный импорт
Соблюдайте минимальное количество импортов. Например, опустите импорт UIKit
, если импортируете Foundation
.
Отступы
- Отступ использует 4 пробела, а не табуляцию, чтобы сохранить пространство и помочь предотвратить обертку строк. Для этого надо убедиться, что выбрана соответствующая опция в Xcode (Preferences / Text Editing / Indentation / Prefer Indent using: Spaces, и Tab width: 4)
- Обычные и фигурные скобки (в
if
,else
,switch
,while
и т. д.) всегда открываются в той же строки, что и оператор, но закрываются на новой строке - Совет: Можно автоматически применить корректный отступ, выделив нужный код, а затем нажав Control-I (или Editor/Structure/Re-Indent)
Рекомендуется:
if user.isHappy { // что-то сделаем } else { // сделаем что-то другое }
Не рекомендуется:
if user.isHappy { // что-то сделаем } else { // сделаем что-то другое }
- Должна быть ровно одна пустая строка между методами, помогающими визуальной ясности и организации. Пропуски внутри методов должны разделять функциональность, но наличие слишком большого их количества в методе часто означает, что вы должны отрефакторить этот метод
- Двоеточия всегда не имеют пробела слева, но имеют один справа. Исключением является тройной оператор
? :
, пустой словарь[:]
и синтаксис#selector
для неназванных параметров(_ :)
Рекомендуется:
class TestDatabase: Database { var data: [String: CGFloat] = ["A": 1. 2, "B": 3.2] }
Не рекомендуется:
class TestDatabase : Database { var data :[String:CGFloat] = ["A" : 1.2, "B":3.2] }
- В идеале, длинные строки должны быть в пределах 70 символами. Тем не менее, жесткого ограничения нет
- Пробелов на концах строк быть не должно
- В конце каждого файла должна быть одна пустая строка
Комментарии
При необходимости, используйте комментарии, чтобы объяснить, почему какой-то фрагмент кода что-то делает. Комментарии должны быть обновлены до текущего состояния кода или удалены совсем.
Избегайте комментариев внутри блока кода, так как код должен быть как можно более самодокументированным. Исключение: это не относится к тем комментариям, которые используются для создания документации.
Классы и структуры
Что использовать?
Структуры имеют семантику значений. Используйте структуры для вещей, которые не имеют личности. Массив, содержащий [a, b, c], действительно тот же, что и другой массив, содержащий [a, b, c], и они полностью взаимозаменяемы. Неважно, используете ли вы первый массив или второй, потому что они представляют собой то же самое. Вот почему массивы – это структуры.
Классы имеют ссылочную семантику. Используйте классы для вещей, которые имеют личность или определенный жизненный цикл. Можно моделировать человека как класс, потому что объекты двух людей – две разные вещи. Все потому, что если у двух людей одно и то же имя и дата рождения, то это не значит, что они одни и те же. Но дата рождения человека была бы структурой, потому что дата 3 марта 1950 года такая же, как и любой другой объект даты 3 марта 1950 года. Сама дата не имеет личности.
Иногда вещи должны быть структурами, но при этом должны соответствовать AnyObject
или исторически моделироваться уже как классы (NSDate
, NSSet
). Старайтесь как можно ближе следовать этим рекомендациям.
Пример определения
Вот пример хорошо продуманного определения класса:
class Circle: Shape { var x: Int, y: Int var radius: Double var diameter: Double { get { return radius * 2 } set { radius = newValue / 2 } } init(x: Int, y: Int, radius: Double) { self.x = x self.y = y self.radius = radius } convenience init(x: Int, y: Int, diameter: Double) { self.init(x: x, y: y, radius: diameter / 2) } override func area() -> Double { return Double.pi * radius * radius } } extension Circle: CustomStringConvertible { var description: String { return "center = \(centerString) area = \(area())" } private var centerString: String { return "(\(x),\(y))" } }
Когда сигнатура метода слишком длинная, параметры должны быть перенесены в новую строку:
override func register( withСardNumber cardNumber: String, completion completionBlock: @escaping AuthService. RegisterWithCardNumberCompletionBlock, failure failureBlock: @escaping Service.ServiceFailureBlock) -> WebTransportOperation { //... }
Пример выше демонстрирует следующие стили:
- Указывайте типы для свойств, переменных, констант, объявлений аргументов и других операторов с пробелом после двоеточия, например.
x: Int
иCircle: Shape
- Определяйте несколько переменных и структур в одной строке, если они имеют общую цель/контекст
- Определение геттера и сеттера, а также наблюдателя свойств
- Не добавляйте модификаторы доступа, такие как
internal
, если они уже установлены по умолчанию. Аналогичным образом не следует повторять модификатор доступа при переопределении метода - Организовывайте дополнительную функциональность (например, печать) в расширениях
- Скрывайте данные реализации, не связанные с общим доступом, такие как
centerString
внутри расширения с помощью частного контроля доступа
Использование self
Для краткости кода избегайте использования self
, так как Swift не требует доступа к свойствам объекта или вызова его методов.
Используйте self
только тогда, когда это требуется компилятором (в сбегающих @escaping
замыканиях или в инициализаторах для устранения неоднозначности свойств из аргументов). Другими словами, если код компилируется без self
, опустите его.
Вычисляемые свойства
Если вычисляемое свойство доступно только для чтения, опустите get
. Предложение get
требуется только тогда, когда предоставляется предложение set
.
Рекомендуется:
var diameter: Double { return radius * 2 }
Не рекомендуется:
var diameter: Double { get { return radius * 2 } }
Всегда используйте вычисляемое свойство вместо метода без аргументов и побочных эффектов.
Рекомендуется:
var homeFolderPath: Path { //... return path }
Не рекомендуется:
func homeFolderPath() -> Path { //. .. return path }
Использование Final
Маркировка классов как final
в примерах может отвлекать от основной темы и не всегда требуется. Тем не менее, использование final
может иногда уточнять ваши намерения и стоит затрат. В приведенном ниже примере Box
имеет особую цель, и расширение в виде производного класса не предназначено. Пометка final
делает это более понятным.
final class Box<T> { let value: T init(_ value: T) { self.value = value } }
Также это улучшает чтение кода и ускоряет компиляцию.
Объявление функций
Сохраняйте короткие объявления функций или типов на одной строке, включая открывающую фигурную скобку:
func reticulateSplines(spline: [Double]) -> Bool { // reticulate code goes here }
Для функций надо добавить переносы строк для каждого аргумента, если они превышают руководство по ширине страницы:
func reticulateSplines(spline: [Double], adjustmentFactor: Double, translateConstant: Int, comment: String) -> Bool { //. .. }
или если параметры выходят за пределы ширины страницы:
func reticulateSplines( veryLoooooooooooooooooooooooooooooooooooongParameter: [Double], adjustmentFactor: Double, translateConstant: Int, comment: String) -> Bool { //... }
Это же правило применяется и для вызовов функций.
Оставьте одну или две пустые строки между функциями и одну после MARK
func colorView() { //... } func reticulate() { //... } // MARK: - Private private func retry() { //... }
Выражения замыканий
Используйте синтаксис закрывающего замыкания только в том случае, если в конце списка аргументов имеется одно замыкание. При этом, укажи понятное имя для замыкания. Тип и скобки замыкания должны быть опущены.
Рекомендуется:
UIView.animate(withDuration: 1.0) { self.myView.alpha = 0 } UIView. animate( withDuration: 1.0, animations: { self.myView.alpha = 0 }, completion: { finished in self.myView.removeFromSuperview() })
Не рекомендуется:
UIView.animate(withDuration: 1.0, animations: { self.myView.alpha = 0 }) UIView.animate(withDuration: 1.0, animations: { self.myView.alpha = 0 }) { (f: Bool) in self.myView.removeFromSuperview() }
Для замыканий с одним выражением, где контекст понятен, используйте неявный возврат:
attendeeList.sort { a, b in a > b }
Связанные методы с использованием закрывающих замыканий должны быть понятными и легко читаемыми. Примеры:
let value = numbers .map { $0 * 2 } .filter { $0 > 50 } .map { $0 + 10 }
Типы
Всегда используйте родные типы Swift, когда они доступны. Swift предлагает ассоциацию к типам Objective-C, поэтому вы можете использовать полный набор методов по мере необходимости.
Рекомендуется:
let width: Double = 120 // Double let widthString = (width as NSNumber).stringValue // String
Не рекомендуется:
let width: NSNumber = 120.0 // NSNumber let widthString: NSString = width.stringValue // NSString
В коде SpriteKit используйте CGFloat
, т.к. он сделает код более кратким, избегая слишком большого количества преобразований.
Константы
Константы определяются с помощью ключевого слова let
, а переменные – var
. Всегда используйте let
вместо var
, если значение переменной не изменится.
Совет: Есть неплохая техника, когда определяете объекты, используя let
, и изменяете его на var
, если компилятор начнет ругаться.
Вы можете определить константы для типа, а не для экземпляра этого типа, используя свойства типа. Чтобы объявить свойство типа как константу, просто используйте static let
. Свойства типа, объявленные таким образом, намного лучше, чем глобальные константами, потому что их легче отличить от свойств экземпляра. Пример:
Рекомендуется:
enum Math { static let e = 2.718281828459045235360287 static let root2 = 1.41421356237309504880168872 } let hypotenuse = side * Math.root2
Не рекомендуется:
let e = 2.718281828459045235360287 // портит глобальное пространство имен let root2 = 1.41421356237309504880168872 let hypotenuse = side * root2 // что за root2?
Если уж приспичило использовать глобальное пространство имен, то советуем именовать в следующем формате:
Рекомендуется:
let TopMargin: CGFloat = 10
Не рекомендуется:
let kTopMargin: CGFloat = 10 let bottomMargin: CGFloat = 100
Статические методы и свойства типа переменных
Статические методы и свойства типа работают аналогично глобальным функциям и глобальным переменным, также должны использоваться экономно. Они полезны, когда функциональность привязана к определенному типу или когда требуется совместимость с Objective-C.
Необязательные значения (Optionals)
Можно объявлять переменные и возвращаемые типы функций как необязательные ?
, где допустимо значение nil
.
Используйте неявно развернутые типы, объявленные с помощью !
только тогда, когда заранее известно, что они будут инициализированы раньше, чем будут использованы. Например, subviews
, которые будут установлены во viewDidLoad
.
При доступе к необязательному значению используйте необязательную цепочку:
self.textContainer?.textLabel?.setNeedsDisplay()
Используйте также дополнительную связку if let
, когда удобнее разворачивать значение и выполнять несколько операций:
if let textContainer = self.textContainer { // несколько операций с textContainer }
При наименовании необязательных переменных и свойств избегайте указывать их необязательность, например, optionalString
или maybeView
, поскольку их необязательность уже указана в объявлении типа.
Для объектов развернутых типов не используй такие имена, как unwrappedView
или actualLabel
. Также лучше добавить новую строку после if
, если в разделе разворачивания есть несколько переменных.
Рекомендуется:
var subview: UIView? var volume: Double? // позже... if let subview = subview, let volume = volume { // что-то сделать с развернутыми subview и volume }
Не рекомендуется:
var optionalSubview: UIView? var volume: Double? if let unwrappedSubview = optionalSubview { if let realVolume = volume { // что-то сделать с развернутыми unwrappedSubview и realVolume } }
Ленивая инициализация
Рассмотрите возможность использования ленивой инициализации для более тонкого контроля за временем жизни объекта. Это особенно актуально для UIViewController
, который лениво загружает вьюшки. Можно использовать замыкание, которое немедленно вызовится { }()
или вызвать фабричный метод. Пример:
lazy var locationManager: CLLocationManager = self.makeLocationManager() private func makeLocationManager() -> CLLocationManager { let manager = CLLocationManager() manager.desiredAccuracy = kCLLocationAccuracyBest manager.delegate = self manager.requestAlwaysAuthorization() return manager }
Примечания:
[unowned self]
здесь не требуется. Retain-цикл не создается- У менеджера местоположений есть побочный эффект для появления пользовательского интерфейса, чтобы спросить у пользователя разрешение, поэтому подобный тонкий контроль здесь имеет смысл
Вывод типа
Всегда предпочитайте компактный код и пусть компилятор сам выводит тип для констант или переменных отдельных экземпляров. Вывод типа также подходит для небольших массивов и словарей. При необходимости можно указать конкретный тип, например CGFloat
или Int16
.
Рекомендуется:
let message = "Click the button" let currentBounds = computeViewBounds() var names = ["Mic", "Sam", "Christine"] let maximumWidth: CGFloat = 106.5
Не рекомендуется:
let message: String = "Click the button" let currentBounds: CGRect = computeViewBounds() let names = [String]()
Тип аннотации для пустых массивов и словарей
Для пустых массивов и словарей не надо использовать аннотацию типа.
Рекомендуется:
var names = [String]() var lookup = [String: Int]()
Не рекомендуется:
var names: [String] = [] var lookup: [String: Int] = [:]
Примечание: Следуя этому руководству, выбор понятных имен еще более важен, чем раньше. Массивы, желательно, именовать существительным во множественном числе (Например, names
).
Синтаксический сахар
Используйте краткие версии объявлений типа, используя синтаксис обобщений.
Рекомендуется:
var deviceModels: [String] var employees: [Int: String] var faxNumber: Int?
Не рекомендуется:
var deviceModels: Array<String> var employees: Dictionary<Int, String> var faxNumber: Optional<Int>
Массивы и словари
Используйте следующий перенос, когда массив или словарь не умещаются по ширине страницы:
Рекомендуется:
let deviceModels = ["BMW": 100, "Mercedes": 120] let wheels = [ "Continental", "Vitoria", ... ]
Не рекомендуется:
let wheels = ["Continental", "Vitoria", // параметры, превышающие ширину страницы]
Функции против методов
Свободные функции, которые не привязаны к классу или типу, должны использоваться крайне осторожно. Когда это возможно, используйте метод вместо свободной функции. Это помогает в удобочитаемости и открытости.
Свободные функции наиболее подходят, если они не связаны с каким-либо конкретным типом или экземпляром.
Рекомендуется
let sorted = items.mergeSorted() // легко найти rocket.launch() // воздействует только на модель
Не рекомендуется
let sorted = mergeSort(items) // сложно найти launch(&rocket)
Исключения для свободных функций
let tuples = zip(a, b) let value = max(x, y, z)
Управление памятью
Код не должен создавать retain-циклы. Нужно проанализировать график объектов (Xcode / Debug navigator / View Memory Graph Hierarchy) и предотвратить strong-циклы с помощью weak
или unowned
ссылками. Кроме того, можно использовать типы значений (struct
, enum
) для предотвращения циклов.
Продление срока жизни объекта
Продлите срок жизни объекта, используя [weak self]
и guard let `self` = self else { return }
(если это необходимо). Лучше использовать [weak self]
, нежели [unowned self]
, т. к. не всегда понятно, что self
к этому моменту будет жить. Продление срока жизни объекта – это рекомендуемый вариант для необязательного разворачивания.
Рекомендуется
resource.request().onComplete { [weak self] response in guard let `self` = self else { return } let model = strongSelf.updateModel(response) strongSelf.updateUI(model) }
Не рекомендуется
// будет сбой, если self будет освобожден (выгружен из памяти) в момент выполнения замыкания resource.request().onComplete { [unowned self] response in let model = self.updateModel(response) self.updateUI(model) }
Не рекомендуется
// освобождение self может произойти между обновлением модели и обновлением пользовательского интерфейса, если обновление модели происходит не в главном потоке resource.request().onComplete { [weak self] response in let model = self?.updateModel(response) DispatchQueue. global.main.async { self?.updateUI(model) } }
Контроль доступа
Аннотации полного контроля доступа в учебниках могут отвлекать от основной темы и в общем-то не требуются. Однако использование private
и fileprivate
, таким образом, добавляет ясности и способствует инкапсуляции. Лучше использовать private
, нежели fileprivate
, если это возможно. Использование расширений может потребовать использования fileprivate
.
Можно явно использовать open
, public
и internal
, когда вам требуется полная спецификация контроля доступа.
Используйте контроль доступа в качестве первичного спецификатора свойств. Исключения составляют лишь static
или атрибуты, такие как @IBAction
, @IBOutlet
, @discardableResult
и @IBInspectable
.
Рекомендуется:
private let message = "Great Scott!" class TimeMachine { fileprivate dynamic lazy var fluxCapacitor = FluxCapacitor() }
Не рекомендуется:
fileprivate let message = "Great Scott!" class TimeMachine { lazy dynamic fileprivate var fluxCapacitor = FluxCapacitor() }
Поток управления
Лучше использовать стиль for-in
для цикла for
, нежели стиль while-condition-increment
.
Рекомендуется:
for _ in 0 ..< 3 { print("Hello three times") } for (index, person) in attendeeList.enumerated() { print("\(person) is at position #\(index)") } for index in stride(from: 0, to: items.count, by: 2) { print(index) } for index in (0...3).reversed() { print(index) }
Не рекомендуется:
var i = 0 while i < 3 { print("Hello three times") i += 1 } var i = 0 while i < attendeeList.count { let person = attendeeList[i] print("\(person) is at position #\(i)") i += 1 }
Золотой путь
При написании кода с условными обозначениями левый край кода должен быть, как говорят, «золотым». То есть, не надо добавлять лишние операторы if
, заменив их на операторы множественного возврата. Для этого был создан оператор guard
.
Рекомендуется:
func computeFFT(context: Context?, inputData: InputData?) throws -> Frequencies { guard let context = context else { throw FFTError. noContext } guard let inputData = inputData else { throw FFTError.noInputData } // используем context и inputData для подсчета frequencies return frequencies }
Не рекомендуется:
func computeFFT(context: Context?, inputData: InputData?) throws -> Frequencies { if let context = context { if let inputData = inputData { // используем context и inputData для подсчета frequencies return frequencies } else { throw FFTError.noInputData } } else { throw FFTError.noContext } }
Использование guard
Когда в оператор входят несколько условных выражений, надо добавить перенос строки перед новым операндом. Сложные условия лучше перенести в отдельные функции.
Рекомендуется:
if isTrue(), isFalse(), tax > MinTax { // ... }
Не рекомендуется:
if a > b && b > c && tax > MinTax && currentValue > MaxValue { // . .. }
Когда несколько опций раскрываются через guard
или if let
, то вложенность заметно сокращается. Пример:
Рекомендуется:
guard let number1 = number1, let number2 = number2, let number3 = number3 else { fatalError("impossible") } // что-то делаем
или можно использовать вариант else
в одну строку, если внутри всего один оператор
guard let number1 = number1, let number2 = number2 else { return } // что-то делаем
или однострочный вариант, если условие всего одно
guard let number1 = number1 else { return }
Не рекомендуется:
if let number1 = number1 { if let number2 = number2 { if let number3 = number3 { // что-то делаем } else { fatalError("impossible") } } else { fatalError("impossible") } } else { fatalError("impossible") }
Обработка guard
Операторы guard обязаны каким-то образом обозначить выход. Как правило, это должен быть простой однострочный оператор, такой как return
, throw
, break
, continue
или fatalError()
. Следует избегать больших блоков кода. Если для нескольких точек выхода требуется код очистки, стоит использовать defer
, чтобы избежать дублирования кода очистки.
Точки с запятой
Swift не требует точки с запятой после каждого оператора в вашем коде. Они необходимы только в том случае, если вы хотите объединить несколько операторов в одной строке. Но это делать крайне нежелательно.
Рекомендуется:
let swift = "not a scripting language"
Не рекомендуется:
let swift = "not a scripting language";
Примечание: Swift сильно отличается от JavaScript, где опускание точек с запятой обычно считается опасным занятием
Круглые скобки
Скобки вокруг выражений не требуются и их следует опустить.
Рекомендуется:
if name == "Hello" { print("World") }
Не рекомендуется:
if (name == "Hello") { print("World") }
В больших выражениях необязательные круглые скобки иногда могут сделать код более понятным.
Рекомендуется:
let playerMark = (player == current ? "X" : "O")
Формат организации и Bundle Identifier
В случае использования проекта Xcode организация должна быть настроена на вашу компанию/имя, также Bundle Identifier должен быть в формате domain.companyName.appName
,
где
domain – доменная зона проекта, обычно соотствует доменной зоне сайта компании, например, com,
companyname – наименование компании (обычно в нижнем регистре),
appName – название вашего проекта (обычно в формате UpperCamelCase)
Ссылки
- The Swift API Design Guidelines
- The Swift Programming Language
- Using Swift with Cocoa and Objective-C
- Swift Standard Library Reference
- Ray Wenderlich Swift Style Guide
- RedMadRobot Swift Style Guide
DevBlog • SWIFT ☭ APPS
DevBlog
Обновлено
Я решил стать в 2022 году iOS разработчиком (iOS developer).
В своем блоге я буду публиковать все этапы становления меня, как разработчика, материалы которые я нахожу и изучаю, проблемы с которыми я сталкиваюсь, самостоятельно изучая язык программирования Swift и платформу iOS.
Целью изучения iOS разработки является реализация собственных приложений и поиск интересных проектов в профильных компаниях, где мои навыки могу быть полезны.
Читать далее iOS developer roadmap 2022Продолжить
DevBlog
Обновлено
Вариант реального тестового задания на позицию iOS Developer (Junior). Новичкам в iOS разработки предлагается разработать приложение инженерный калькулятор с полем и кнопками для ввода выражения.
Читать далее Тестовое задание iOS Developer — v.03Продолжить
DevBlog
Обновлено
Вариант тестового задания на позицию iOS Developer (Junior). Новичкам в iOS разработки предлагается разработать приложение – игру Alias. Основные требования к разработке: язык программирования Swift, UI фреймворк — UIKit. Требования к проекту Минимум 4 экрана. (Главный экран, экран с правилами, экран выбора тематики карточек, экран отгадывания слов) Слова появляющиеся на экране не должны повторяться минимум…
Читать далее Тестовое задание iOS Developer — v.02Продолжить
DevBlog
Обновлено
Вариант тестового задания на позицию iOS Developer (Junior). Новичкам в iOS разработки предлагается разработать приложение по поиску информации о музыкальных альбомах на iTunes с помощью парсинга API. Основные требования к разработке: язык программирования Swift, UI фреймворк – UIKit.
Читать далее Тестовое задание iOS Developer – v.01Продолжить
DevBlog
Обновлено
Помимо прохождения курсов или чтения книг по основам Swift и iOS разработки, очень важно получать обратную связь и общаться с сообществом единомышленников. Такое коммьюнити уже давно существует на просторах Telegram.
Ниже представлена моя личная подборка полезных рускоговорящих телеграм каналов не только для тех, кто только начинает изучение разработки мобильных приложений для iOS, но и уже для “вкатившихся” в индустрию.
Читать далее Telegram каналы для изучения Swift и iOS разработкиПродолжить
DevBlog
Обновлено
В зависимости от компании, в которую Вы планируете устроиться, могут отличаться вопросы на интервью для iOS Junior Developer. Ниже представлен перечень распространённых вопросов на собеседовании для младших разработчиков iOS. 30 Interview Questions for Junior iOS Developers Classes vs structs Memory management How to avoid retain cycles Bounds vs frame GCD and how to use it…
Читать далее 30 вопросов на собеседовании для Junior iOS DeveloperПродолжить
DevBlog
Обновлено
Начале обучения iOS разработки начинающему программисту тяжело определить объем необходимых знаний, чтобы получить первую работу в должности младший iOS разработчик.
Давайте разберём основные вопросы компетенций: какой минимальный объем знаний, а так же что должен уметь начинающий разработчик, чтобы претендовать на позицию iOS Junior Developer в 2022 году.
Читать далее Что должен знать iOS Junior Developer в 2022Продолжить
DevBlog
Обновлено
Перед тем, как назначить собеседование, работодатель может направить начинающему разработчику тестовое задание для позиции Junior iOS Developer, с целью проверки технических навыков и знаний. Это стандартная практика для IT компаний. Тестовые задания iOS разработчика могут быть как в виде перечня вопросов, так и в виде полноценного ТЗ на разработку iOS приложения. Сложность заданий зависит от…
Читать далее Тестовые задания Junior iOS Developer 2022Продолжить
Apple News
Обновлено
С 27 января 2022 года будут доступны промежуточные обновления сертификатов для службы Apple Push Notification (APN) и идентификатора разработчика (Developer ID). Промежуточный сертификат Apple Worldwide Developer Relations (G4) SSL-сертификаты APN будут выдаваться из нового промежуточного сертификата (суб-CA Worldwide Developer Relations G4), ориентированного исключительно на APN. Как только новый сертификат станет активным и доступен для загрузки, вы…
Читать далее Предстоящие обновления сертификатов Apple DeveloperПродолжить
Apple News
Обновлено
Во вчерашнем обновлении iOS 15.2 добавлена одна из ключевых новых функций программного обеспечения – Apple Music Voice Plan, который предназначен для того, чтобы пользователи могли получить доступ к Apple Music исключительно через Siri.
Читать далее Обзор Apple Music Voice PlanПродолжить
ПОШАГОВАЯ ПРОЦЕДУРА ПОИСКА ЛУЧШЕЙ КОМПАНИИ-РАЗРАБОТЧИКА IOS
Мобильные операционные системы жестко конкурируют друг с другом, поэтому они могут успешно стоять в стороне друг от друга в этой высококонкурентной индустрии смартфонов. Говоря о конкуренции, две основные платформы в настоящее время сильно конкурируют; Android и iOS.
В статье здесь; мы подробно обсудим природу популярности последнего, что, в свою очередь, заставляет предприятия расширять свои возможности с помощью приложения для iOS. Затем следуют советы, которым необходимо следовать, прежде чем связываться с организацией для создания приложения. Это включает в себя шаги, которые пригодятся, чтобы убедиться, что они находят лучшее предприятие для этой задачи.
Итак, начнем.
где купить сиба ину
Растущая популярность рынка приложений для iOS
Взгляните на график ниже, чтобы получить представление о растущей популярности рынка приложений для iOS в настоящее время.
Источник изображения: Статистика.com
Соблюдая график выше; вы можете получить хорошее представление о том, как с 2017 года, примерно в 2021 году, рынок Apple App Store стал свидетелем хорошей популярности.
как отобразить переменную javascript в html
Это связано с такими причинами, как:
- Обладая идеальным оборудованием, обеспечивая блестящую поддержку клиентов и используя чистые навыки программирования, Apple обеспечивает отличное качество обслуживания клиентов.
- Приложения для iOS имеют бесшовный интерфейс, благодаря чему привлекают максимальное количество пользователей. Это означает, что конечная цель бизнеса, заключающаяся в увеличении продаж, становится легко достижимой.
- Предлагая защиту от таких угроз, как вредоносное ПО, помимо облегчения разработчику шифрования онлайн-сделок, любые возможные проблемы, такие как фишинг или взлом, полностью уменьшаются.
- Масштабируемые приложения iOS могут удобно обслуживать клиентов, достойных инвестиций, тем самым обеспечивая максимальную ценность для бизнеса.
Следовательно, глядя на эти пункты выше, становится ясно, что предприятия должны быть подключены к компания по разработке iOS-приложений чтобы получить приложение, которое является безопасным, визуально привлекательным и может привлечь к нему хороший процент аудитории. В конечном итоге это будет способствовать максимальной рентабельности инвестиций для бизнеса.
Итак, вот как вы можете найти лучшую компанию, предлагающую услуги по разработке приложений для iOS.
Правильный выбор компании по разработке приложений для iOS: что нужно помнить
Получите знания о технической экспертизе и опыте
Знание — сила. Следовательно, когда вы нанять iOS-разработчиков , вам необходимо сначала убедиться в технической компетентности и знаниях команды. Поэтому постарайтесь получить представление об их понимании инструментов и технологий, таких как Xcode, Cocoa framework, Objective C и т. д. Это также включает их осведомленность о разработке приложений для различных секторов.
В то же время получить некоторое представление об их опыте. Это означает получение всестороннего представления о навыках, которые они разработали или которыми обладают при создании приложений для платформы iOS.
Все это немного поможет вам, прежде чем вы начнете сотрудничать с ними и работать с ними над своим проектом — созданием приложения для iOS.
где купить hempcoin
Проанализируйте их регистрацию в iTunes
Это еще одна область, в которой вам нужно убедиться. Рекомендуется работать с компанией-разработчиком приложений для iOS, у которой уже есть регистрация в iTunes. Это подтверждает их навыки в Услуги по разработке iOS-приложений .
Проверить готовность подписать NDA
Это то, что обеспечит безопасность вашего проекта, гарантируя, что содержимое проекта не попадет в руки вашего конкурента, или, если на то пошло, вы потеряете права на свой проект. Следовательно, убедитесь, что, помимо их опыта, вы также знаете об их готовности сохранить общую конфиденциальность вашего проекта.
Следовательно, проверьте, согласятся ли они подписать NDA (соглашение о неразглашении). Это обеспечит безопасность вашего проекта и сохранит его конфиденциальность.
Проанализируйте их концептуальную ясность
Наряду со временем и стоимостью, которые, несомненно, являются критически важными областями рассмотрения для нового делового предприятия, прежде чем начинать работу с компанией по разработке приложений для iOS; чтобы проверить их уровень ясности. Это означает, что вам необходимо проанализировать их навыки в различных областях, которые сделают процесс разработки iOS-приложений беспрепятственным. Это поможет вам понять, смогут ли они понять ваши требования за короткое время.
Подводя итоги
Чтобы стать брендом, важно, чтобы у вас была команда, которая понимает ваши требования. Поэтому, если вы создаете приложение для iOS для своего бизнеса, прежде чем сказать «да» компании-разработчику приложений для iOS, в первую очередь проанализируйте их квалификацию, опыт и готовность подписать соглашение о неразглашении. Это поможет вам получить доступ к проекту, который останется вашим; добиться максимального успеха для вас в долгосрочной перспективе.
Как найти IOS разработчика, как и где подбирать IOS разработчиков
Содержание статьи
Борьба за талантливых профессионалов ужесточается с каждым годом и привлекать разработчиков становится все сложнее. Сейчас рынок iOS-разработки растёт за счет крупных корпораций, которые создают собственные приложения для бизнеса. На одну вакансию приходится в среднем два кандидата. Но даже с таким соотношением найти грамотного разработчика бывает нелегко.
В этой статье мы расскажем о нескольких способах, которые помогут рекрутеру привлечь «правильных» соискателей.
Найти ios разработчика — миссия выполнима
Зайти на работный сайт или ввести запрос в поисковую строку — так it-рекрутеры уже не работают. Они, как золотоискатели, просеивают множество страниц, форумов, джоб-бордов в поисках «того самого» кандидата. И помогают им в этом правильно настроенные фильтры.
Boolean & x-ray
Boolean search (булевой поиск) — это поиск веб-страниц с использованием специальных операторов (AND, OR, «» и т. д.). Если компании требуется ios разработчик, булевой поиск помогает сузить выбор и найти кандидата с нужными навыками или опытом. Вам покажут только те страницы, которые подходят под указанные настройки.
- AND (и) — поиск страниц, на которых есть все указанные ключевые слова
- OR (или) — охват одинаковых категорий, которые могут называться разными словами
- «-» — исключить из поиска ненужные слова или фразы
- () — сгруппировать части запроса
- «» — поиск точных фраз
- site: — поиск на конкретном сайте
- intitle: — поиск по заголовкам
- filetype: — поиск по файлам определенного формата.
X-Ray — это тот же Boolean search, но на определенном сайте. Например, вам нужен ios разработчик, и вы решили поискать его в facebook. Тогда x-ray запрос прописывается как site:facebook.com.
Но есть в этом инструменте и важный нюанс: такой запрос не выдаст профили нужных людей сразу — придется проявить смекалку и поэкспериментировать с другими словами-операторами. На каждом сайте свои законы, но зато здесь срабатывает поговорка «терпение и труд все перетрут».
Три варианта, о которых вы могли не знать
- Русский Stack Overflow, в котором разработчики ищут ответы на свои вопросы, может быть пещерой сокровищ для it-рекрутера. Работать с порталом можно по знакомой нам технике boolean search, выискивая всех специалистов, подходящих по заданным параметрам, и зарегистрированных в русской версии Stack Overflow.
- SlideShare с презентациями. Сайт приобрел популярность как площадка с презентациями. А для hr-специалистов эта платформа может стать подмогой в добывании заветных контактов. В поисковой строке вбиваете интересующую технологию, выбираете самую популярную презентацию и находите её автора. Также заодно пробегитесь по его фолловерам и тем, кто поставил лайки и оставил комментарии — вдруг, среди них окажется ваш ios разработчик.
- AngelList — англоязычный сайт для всех, кто интересуется стартапами. Поэтому, если вы рекрутер крупного холдинга, то здесь вам вряд ли будут рады. А вот молодым и дерзким it-первооткрывателям, набирающим команду, как раз welcome. Чтобы найти своих, в верхнем меню выбираем more -> people, и получаем список пользователей ресурса. Далее в опциях сужаете поиск и по профилю отбираете интересных вам специалистов.
Великий и могучий GitHub
Официально GitHub — веб-сервис для хостинга IT-проектов и их совместной разработки. По версии it-рекрутеров, GitHub — основная работающая площадка для поиска, где можно получить обширную выборку подходящих кандидатов.
Правила работают все те же: поиск по ключевым словам, X-Ray поиск по языкам программирования, технологиям и описаниям. Отдельно стоит упомянуть вариант поиска по количеству подписчиков или звездам. Как и в других сферах, чем выше рейтинг — тем лучше репутация и выше профессиональный уровень ios разработчика.
Нажми на кнопку — получишь результат
Github — не сайт знакомств и так просто тут контакты не найти. В помощь it-рекрутерам добрые люди придумали специальные расширения для браузера:
Найти:
- Awesome Autocomplete for GitHub подберет нужных пользователей и репозитории при вводе текста в поисковую строку
- OctoHunt ищет по стеку и локации с анализом профиля разработчика
- EmailOnGitHub после установки выдает email кандидата под фото в профиле
- Better Search for GitHub аналог OctoHunt с теми же функциями
Проанализировать:
- OctoHR соберет в отдельное поле информацию о пользователе: уровень владения навыками, контакты. А еще покажет, был ли разработчик на GitHub Jobs.
- CoderStats расскажет о рейтинге специалиста среди коллег с тем же навыком.
Узнать подробности:
- GitHub Real Names покажет настоящее имя пользователя
- GitHub Hovercard может еще больше: данные о количестве подписчиков, репозиториев, локации. Также расширение даст ценную информацию о текущем месте работы (стоит лишь навести курсор на имя пользователя)
- Glossary Tech объяснит значения странных слов и переведет с айтишного на русской (в общем, палочка-выручалочка для всех, кто не силен в терминологии).
Как пригласить на собеседование ios разработчика
Профиль идеального кандидата перед вами, контакты в наличии — казалось бы, самое сложное уже позади. Но нужно еще уметь грамотно подобраться к разработчику на GitHub:
- посмотрите на репозитории и активность пользователя
Вы будете знать, какие языки он использует и сможете лучше понять, чем он занимался в последнее время. Загружал ли он свой код или сделал fork чужого проекта? Есть ли какая-нибудь задача, над которой он давно трудится? Такой предварительный сбор информации даст вам повод начать диалог и не сесть в лужу с предложением вакансии “в лоб”.
- обзор всех источников
Изучая техническую базу кандидата, не забывайте залезть в Twitter, LinkedIn и Facebook, чтобы получить полную картину и дополнительную опору для общения в виде общих интересов.
- правильный старт
Когда у вас на руках вся нужная информация о кандидате, вы можете начать общение с персонального обращения, рассчитанного именно на этого человека. Откликов ios разработчик получает немало, но именно толковое личное письмо с предложением вакансии будет залогом его внимания.
В статье мы рассказали о том, какие инструменты и технологии помогут найти ios разработчика.
Если у вас возникли сложности с подбором команды, обращайтесь к нам.
Оставляйте заявку на нашем сайте — мы поможем найти классного специалиста.
Что должен знать IT рекрутер при подборе IOS программистов
Это создает проблемы для большинства IT рекрутеров. Большинство из них не имеют опыта, чтобы действительно сказать, подходит данный кандидат на вакансию или нет. Я имею в виду, что вы точно не хотите в итоге получить большую выборку не релевантных кандидатов, с которой вам нужно провести собеседование. Это приведет к часам технических собеседований, на которые у вашей ИТ-команды просто нет времени.
Что нужно знать, чтобы проверить навыки разработчика iOS?
Мы подготовили всю информацию, необходимую для эффективной проверки навыков IOS программистов. К концу статьи вы научитесь понимать техническую часть, сможете задать правильные вопросы, понять жаргон и расшифровать резюме ит специалиста. Что наиболее важно, вы узнаете, какие тесты вы можете использовать для отбора кандидатов, чтобы на собеседование приглашали только лучшие. Но перед этим важно изучить основы.
1. Что такое iOS?
iOS — это операционная система, которую Apple разработала для работы своего вездесущего iPhone. Не только для лидерства на рынке телефонов, Apple использовала свою операционную систему для ряда других устройств, включая iPad, Apple Watch и Apple TV. Итак, если вы возьмете на работу разработчика iOS, он будет писать код под iOS? Не совсем так.
Когда вы говорите о IOS разработчике, вы на самом деле говорите о разработчике, который использует один или оба языка, проприетарных для iOS. Начиная с 2008 года Apple выпустила собственный проприетарный язык программирования Objective-C для использования в iOS. Четыре года назад к нему присоединился Swift. Хотя это единственные два языка, доступные для iOS, вы также можете использовать эти языки для разработки программного обеспечения для macOS. Но даже если их можно использовать в обеих операционных системах, в некоторых ключевых моментах они немного отличаются.
- Objective-C является рефлексивным, основанным на классах объектно — ориентированным.
- Swift — это мультипарадигмальный, протокольно-ориентированный, объектно — ориентированный, функциональный, императивный и блочно-структурированный.
Swift в значительной степени заимствовал свои общие языковые идеи из Objective-C вместе с JavaScript, Ruby и Python. Это также намного удобнее, чем Objective-C, в основном потому, что он безопасен по типу. Это означает, что стало проще начать изучать программирование для iOS и повысить безопасность и стабильность приложений.
Вы обнаружите, что, хотя существует ряд устаревших систем, использующих Objective-C, Swift в основном стал предпочтительным языком программирования для iOS. Кривая обучения по написанию безопасного кода без ошибок немного круче с Swift, чем с Objective-C. Тем не менее, как только разработчики овладевают Swift, писать безопасный, свободный от ошибок код становится проще, чем это было с Objective-C. Swift использует ту же среду выполнения и SDK, что и Objective-C. Это означает, что он полностью обратно совместим со всем технологическим стеком iOS, а также с новыми инструментами только для Swift.
2. Что важно знать рекрутеру об iOS
Среда iOS регулярно меняется. Обычно раз в год происходит крупное обновление, которое сообщает об используемых языках, а также о направлении развития. Обычно о них объявляют на WWDC или Всемирной конференции разработчиков. Это крупнейшее событие в мире для разработчиков iOS, и все новые технологии iOS были анонсированы в основном докладе. Любой рекрутер, который ищет профиль программистов, должен принять во внимание то, что рассказывают на данной конференции, чтобы оставаться в курсе последних технологий iOS.
Две самые важные библиотеки, которые должны знать все разработчики iOS, — это UIKit и Foundation. Он просто не может создавать приложения без них, поэтому обязательно может использовать эти инструменты. В дополнение к инструментам, поддерживаемым Apple, существует огромное количество библиотек и фреймворков с открытым исходным кодом, которые IOS программисты могут использовать для создания своего программного обеспечения.
3. Как проверить навыки разработчика iOS на этапе отбора
3.1. Техническая проверка навыков на основе резюме
Вероятно, самое ценное, о чем может рассказать вам резюме программиста, — это типы проектов, в которых участвует кандидат. Они могут включать такие важные функции, как Bluetooth, локальные базы данных и работа со службами определения местоположения. Очевидно, было бы огромным плюсом, если бы они разработали приложение с нуля. Любое приложение можно проверить, перейдя в магазин приложений iOS.
Создание приложений — не единственный полезный опыт, который стоит искать в резюме кандидата. Приятно видеть опыт работы с другими языками, особенно с C ++. А также, что кандидат работал с определенной платформой, такой как Apple Watch или Apple TV. Из-за характера платформы вы можете увидеть знания о модульном тестировании и процессе отправки в App Store, а также опыт настройки непрерывной интеграции.
Хотя просмотреть резюме довольно просто, иногда словарный запас, необходимый рекрутеру, чтобы понять, что находится в резюме разработчика iOS, может сбивать с толку. Чтобы помочь вам, мы составили глоссарий, который поможет понять наиболее важные навыки IOS разработчика.
3.2 Глоссарий навыков iOS-разработчиков для технических рекрутеров
- Языки: Swift, Objective-C
- Общее: GCD, Operational Queue, Push Notifications, Awareness in code signing
- База данных: Sqlite, CoreData, Realm
- UI: UIKit, Core Animation, Autolayout, Size Classes, SnapKit
- Конкретные фреймворки (все работают как в Objective-C, так и в Swift): Core Location, MapKit, AVFoundation, StoreKit, Extensions, AddressBook, EventKit, CAllKit, SiriKit, Core Bluetooth
3.3 Дополнительная информация об iOS, которую было бы полезно знать рекрутеру
Новые функции были добавлены в каждую новую версию iOS. По мере добавления функций разрабатываются новые платформы для взаимодействия с ними (SiriKit, CallKit, WatchKit и MapKit). Помимо этого, разные версии операционной системы в основном одинаковы, только с добавлением новых расширений.
Наиболее распространенные названия технологий iOS, которые взаимозаменяемы
CoreData и SQLite могут использоваться как взаимозаменяемые
Насколько близки друг к другу соответствующие версии технологий iOS:
Все доступные версии Swift похожи друг на друга. Конечно, язык прошел несколько итераций от 1.0 до 4.2. и каждый из них внес свои специфические изменения. Однако, если у кого-то есть опыт работы с тремя версиями, у них не должно возникнуть проблем с использованием последней версии.
4. Навыки разработчика iOS: вопросы для собеседования
Собеседование — это важный момент, чтобы узнать, с какими проблемами столкнулся ваш кандидат и как он подходит к их решению.
4.1 Вопросы об опыте использования платформы для iOS-разработчика
Вопрос 1: Выберите некоторые технологии из резюме кандидата и попросите кандидата объяснить, что это такое и как они используются.
Почему следует задать данный Вопрос 1: Просто чтобы проверить их осведомленность об упомянутых технологиях.
Вопрос 2: Попросите кандидата описать наиболее интересный проект, в котором они принимали участие, и какова была их роль в этом проекте.
Почему вам следует задать Вопрос 2: Чтобы проверить, насколько сложными и разнообразными были проекты, которые разработчик разрабатывал, и какова его роль и уровень знаний (мидл, ведущий разработчик, архитектор).
4.2 Навыки iOS-разработчика: знания и умения
Вопрос 3: Попросите кандидата сравнить Swift и Objective-C.
Почему вам следует задать Вопрос 3: Он дает представление о том, насколько опытен разработчик, и работали ли они с Objective-C или нет. В большинстве случаев знания Swift недостаточно. Даже на начальном уровне кандидат должен уметь понимать и использовать как Objective-C, так и Swift.
Вопрос 4: Какие технологии iOS широко используются сейчас, а какие могут стать популярными в будущем?
Почему вам следует задать Вопрос 4: Он сообщает вам, обладает ли кандидат способностью анализировать и прогнозировать тенденции ИТ-рынка и отрасли на основе навыков разработчика iOS.
4.3. Поведенческие вопросы для iOS-разработчика
Вопрос 5: Был ли у вас опыт обучения и наставничества в Swift?
Почему вам следует задать Вопрос 5: Проверьте, может ли разработчик быть хорошим наставником для новичков.
Вопрос 6: Какими решениями и проектами вы больше всего гордитесь?
Почему вам следует задать Вопрос 6: Это поможет вам проверить уровень сложности задач в предыдущих проектах
5. Техническая проверка навыков работы с iOS с помощью онлайн-теста по программированию.
Скрины резюме и собеседования могут быть полезны при подборе IOS разработчика, но на самом деле они не могут сказать вам, обладает ли ваш кандидат правильными навыками. Что вам действительно нужно, так это фактическая разработка программного обеспечения. Это может стать проблемой, если все сделано неправильно, потому что у кандидатов ограниченное количество времени и терпения для выполнения проекта кодирования. Онлайн тест кодирования может быть хорошим решением. Но как узнать, какой выбрать? У правильного должно быть несколько ключевых особенностей.
- Он включает в себя типы задач, которые кандидат фактически будет выполнять после приема на работу (и реальные навыки разработчика iOS, которые им понадобятся для этого).
- Он должен охватывать как технологию, так и технологический стек, в котором они будут работать.
- Он должен быть максимально приближен к естественному процессу развития — это означает: кандидат должен иметь доступ к собственной IDE. Они должны иметь возможность использовать все ресурсы, с которыми они обычно работают, включая библиотеки, фреймворки, Stack Overflow и даже Google.
- Он должен проверять навыки программирования, а также бизнес-логику.
- Он должен освещать типы решений по кодированию, которые принимает кандидат.
- Его должно быть легко взять откуда угодно, чтобы не беспокоить кандидата
К сожалению, большинство онлайн-тестов не удовлетворяют этим требованиям. Алгоритмные тесты могут сказать вам, умеет ли кандидат писать код, но не могут сказать, насколько хорошо кандидат знает среду, принимаемые решения и используемую бизнес-логику. По сути, они не воссоздают должное навыкам разработчика iOS. Кроме того, они представляют собой довольно неестественный способ написания кода. В результате они отталкивают многих программистов, которые не считают, что могут точно представить свои навыки таким образом. Эти ит специалисты рискуют выпасть из вашей воронки найма.
Обновления сайта — Apple Developer
Низкоуровневая сеть в watchOS
27 сентября 2022 г.
Узнайте о поддерживаемых вариантах использования низкоуровневой сети в watchOS.
Посмотреть техническое примечание TN3135
Планирование вашего приложения
21 сентября 2022 г.
Начните процесс разработки с помощью новых настраиваемых руководств по планированию для каждой платформы Apple. Запланируйте основные функции своего приложения и получите доступ к ключевым ресурсам.
Просмотр страницы iOS
Просмотр страницы iPadOS
Просмотр страницы macOS
Просмотр страницы tvOS
Просмотр страницы watchOS
Запуск SharePlay без существующего вызова FaceTime
20 сентября 2022 г.
Узнайте, как использовать общий лист или контроллер общего доступа к групповым действиям, чтобы запустить SharePlay прямо из вашего приложения без существующего звонка FaceTime.
Посмотреть техническое примечание TN3128
Ресурсы Apple по дизайну
19 сентября 2022 г.
Обновлены комплекты дизайна для iOS 16, iPadOS 16 и macOS Ventura.
Посмотреть страницу
Подготовьте свой почтовый сервер для поддержки BIMI в Apple Mail
14 сентября 2022 г.
Узнайте, как обеспечить отображение соответствующих логотипов BIMI для клиентов Apple Mail.
Посмотреть новую страницу
Присылайте нам свои отзывы и сообщения об ошибках
13 сентября 2022 г.
Полностью переработано с подробностями отправки отзывов и сообщений об ошибках с помощью Feedback Assistant. Теперь включает в себя рекомендации по написанию эффективных отчетов, использованию папки «Входящие» вашей команды, что ожидать после отправки и многое другое.
Посмотреть страницу
За дизайном: За бортом!
12 сентября 2022 г.
Узнайте больше о дизайне приложения Overboard!, получившего награду Apple Design Award 2022.
Посмотреть новую статью
Начало работы с WeatherKit
12 сентября 2022 г.
Обновлены сведения о том, как начать использовать WeatherKit и подписаться на дополнительные вызовы API.
Посмотреть страницу
Ресурсы дизайна
7 сентября 2022 г.
Добавлены лицевые панели для iPhone 14, Apple Watch Ultra и Apple Watch Series 8.
Посмотреть страницу
Развертывание поставщика сетевых расширений
6 сентября 2022 г.
Ознакомьтесь с платформами, пакетами, версиями ОС и конфигурациями устройств для развертывания поставщика сетевых расширений.
Посмотреть техническое примечание TN3134
Начало работы с Xcode Cloud
30 августа 2022 г.
Узнайте, как начать использовать Xcode Cloud и получить сведения о подписке.
Посмотреть новую страницу
За дизайном: (Нескучные) привычки
29 августа 2022 г.
Узнайте больше о дизайне приложения (Not Boring) Habits, получившего награду Apple Design Award 2022 года.
Посмотреть новую статью
За дизайном: Lego Star Wars: Castaways
22 августа 2022 г.
Узнайте больше о дизайне приложения Lego Star Wars: Castaways, получившего награду Apple Design Award 2022 года.
Посмотреть новую статью
Изменения в EventKit в macOS Ventura 13
16 августа 2022 г.
Узнайте, как тестировать приложения на соответствие изменениям API EventKit в macOS Ventura 13.
Посмотреть техническую заметку TN3130
Изменения в EventKit и EventKitUI в iOS 16
16 августа 2022 г.
Узнайте, как тестировать приложения на соответствие изменениям API EventKit и EventKitUI в iOS 16.
Посмотреть техническую заметку TN3132
За дизайном: Откосы
15 августа 2022 г.
Узнайте больше о дизайне приложения Slopes, получившего награду Apple Design Award 2022 года.
Посмотреть новую статью
За дизайном: Marvel Future Revolution
8 августа 2022 г.
Узнайте больше о дизайне приложения Marvel Future Revolution, получившего награду Apple Design Award 2022 года.
Посмотреть новую статью
За дизайном: Odio
1 августа 2022 г.
Узнайте больше о дизайне приложения Odio, получившего награду Apple Design Award 2022 года.
Посмотреть новую статью
Устранение ошибок сборки с помощью вспомогательных инструментов в Xcode Cloud и других средах сборки
26 июля 2022 г.
Просмотрите распространенные причины сбоев при сборке Xcode Cloud, вызванные вспомогательными инструментами, работающими в неправильно настроенной среде сборки.
Посмотреть техническое примечание TN3129
За дизайном: Wylde Flowers
25 июля 2022 г.
Узнайте больше о дизайне приложения Wylde Flowers, лауреата премии Apple Design Award 2022 года.
Посмотреть новую статью
За дизайном: Procreate
18 июля 2022 г.
Узнайте больше о дизайне приложения Procreate, получившего награду Apple Design Award 2022.
Посмотреть новую статью
Ознакомьтесь с приложениями наших выпускников
12 июля 2022 г.
Добавлены новые приложения из последних когорт Apple Entrepreneur Camp. Узнайте о некоторых из наших талантливых выпускников и вдохновении их приложений.
Посмотреть страницу
За дизайном: Музыкальная история
11 июля 2022 г.
Узнайте больше о дизайне приложения «Музыкальная история», лауреата премии Apple Design Award 2022 года.
Посмотреть новую статью
API подключения к магазину приложений
11 июля 2022 г.
Добавлены сведения о последних улучшениях, включая поддержку покупок в приложении, подписок и отзывов клиентов, а также улучшения мощности и производительности.
Посмотреть страницу
За дизайном: Halide Mark II
5 июля 2022 г.
Узнайте больше о дизайне приложения Halide Mark II, лауреата премии Apple Design Award 2022.
Посмотреть новую статью
За дизайном: Gibbon: Beyond the Trees
27 июня 2022 г.
Познакомьтесь с дизайном игры Gibbon: Beyond the Trees, получившей награду Apple Design Award 2022 года.
Посмотреть новую статью
Познакомьтесь с прототипами
21 июня 2022 г.
Команда Apple Prototyping делится советами по дизайну, итерациям и процессу обратной связи.
Посмотреть новую статью
Руководство по интерфейсу пользователя
7 июня 2022 г.
Полностью переработано, чтобы объединить руководства для конкретных платформ в единый документ, упрощающий изучение и сохраняющий важные сведения о каждой платформе.
Посмотреть страницу
Что нового в Apple SDK
6 июня 2022 г.
Узнайте о новейших технологиях в SDK для iOS 16, iPadOS 16, macOS 13, tvOS 16 и watchOS 9.
Посмотреть страницу
Новые технологии WWDC22
6 июня 2022 г.
Просмотрите подборку документации по новым технологиям, платформам и API, представленным на WWDC22.
Посмотреть страницу
Пример кода
6 июня 2022 г.
Просмотрите пример кода, на который есть ссылки в видеороликах сеанса WWDC22.
Посмотреть страницу
Xкод 14
6 июня 2022 г.
Полностью переработано с подробной информацией о новейших технологиях: используйте Swift и SwiftUI с новым мультиплатформенным приложением, быстрее кодируйте с помощью расширенных функций редактора и начните тестирование и развертывание из Xcode Cloud в TestFlight и App Store.
Посмотреть страницу
iOS 16
6 июня 2022 г.
Полностью переработано с подробностями о новейших технологиях.
Посмотреть страницу
iPadOS 16
6 июня 2022 г.
Полностью переработано с подробностями о новейших технологиях.
Посмотреть страницу
macOS 13
6 июня 2022 г.
Полностью переработан с учетом новейших технологий.
Посмотреть страницу
watchOS 9
6 июня 2022 г.
Полностью переработано с подробностями о новейших технологиях.
Посмотреть страницу
Мак Катализатор
6 июня 2022 г.
Добавлены сведения о последних улучшениях и API, которые упрощают создание приложения для Mac из существующего приложения для iPad.
Посмотреть страницу
SwiftUI
6 июня 2022 г.
Полностью переработано с подробностями о новейших технологиях.
Посмотреть страницу
Облако Xcode
6 июня 2022 г.
Добавлены сведения о доступности и планах подписки.
Посмотреть страницу
Представляем WeatherKit
6 июня 2022 г.
Узнайте, как интегрировать точные данные о погоде и прогнозы в свои приложения с помощью новых API Swift и REST.
Посмотреть новую страницу
Набор виджетов
6 июня 2022 г.
Добавлены сведения об использовании WidgetKit для создания дополнений, переноса виджетов на экран блокировки и создания интерактивных действий.
Посмотреть страницу
Siri для разработчиков
6 июня 2022 г.
Добавлены сведения о новых ярлыках приложений, которые поддерживают параметры и синонимы и созданы с помощью новой платформы App Intents.
Посмотреть страницу
Откройте для себя возможности Apple Maps
6 июня 2022 г.
Добавлены подробные сведения о возможностях совершенно новой карты, таких как геокодирование, обзор и выбираемые функции карты, а также новый API сервера карт, который повышает производительность, снижает использование данных и улучшает срок службы батареи.
Посмотреть страницу
Металл
6 июня 2022 г.
Полностью переработано с подробностями о новейших технологиях.
Посмотреть страницу
Технологии Apple для разработчиков игр
6 июня 2022 г.
Полностью переработано с подробностями о новейших технологиях.
Посмотреть страницу
Больше возможностей для изучения с ARKit 6
6 июня 2022 г.
Обновлено с подробностями о видео 4K, расширенными возможностями видео и захвата с поддержкой HDR-видео и захвата фонового изображения высокого разрешения, улучшениями захвата движения и привязками местоположения в новых городах.
Посмотреть страницу
Представляем RoomPlan
6 июня 2022 г.
RoomPlan — это новый Swift API, работающий на ARKit, который использует камеру и сканер LiDAR на iPhone и iPad для создания 3D-плана помещения, включая основные характеристики, такие как размеры и типы мебели.
Посмотреть новую страницу
Ядро ML
6 июня 2022 г.
Добавлены сведения об отчетах о производительности и использовании инструментов для профилирования приложений.
Посмотреть страницу
Создать машинное обучение
6 июня 2022 г.
Добавлены сведения о визуальной оценке и новой платформе Create ML Components.
Посмотреть страницу
загрузки и ресурсы по машинному обучению
6 июня 2022 г.
Добавлены сведения об обучении PyTorch на Mac.
Посмотреть страницу
SharePlay для разработчиков
6 июня 2022 г.
Добавлены сведения о поддержке SharePlay для сообщений и возможности обнаружения приложений в элементах управления FaceTime.
Посмотреть страницу
Что нового для приложений в App Store
6 июня 2022 г.
Полностью переработано с подробной информацией о последних улучшениях для покупок в приложении, StoreKit, App Analytics и Game Center.
Посмотреть страницу
Ключи доступа
6 июня 2022 г.
Узнайте, как использовать ключи доступа, чтобы предоставить людям простой и безопасный способ входа в ваши приложения и веб-сайты на разных платформах — без ввода паролей.
Посмотреть новую страницу
Что нового в Apple Pay
6 июня 2022 г.
Узнайте о поддержке Tap to Pay на iPhone, Apple Pay Later, отслеживании заказов и токенах продавца.
Посмотреть новую страницу
Нажмите для оплаты на iPhone
6 июня 2022 г.
Платежные приложения теперь могут принимать бесконтактные платежи с бесконтактных кредитных или дебетовых карт, Apple Pay, Apple Watch и смартфонов с другими цифровыми кошельками — прямо на iPhone и без каких-либо дополнительных терминалов или оборудования.
Посмотреть новую страницу
Что нового в кошельке
6 июня 2022 г.
Узнайте о поддержке удостоверений личности, представленных в приложениях, Apple Pay Later и отслеживании заказов.
Посмотреть новую страницу
Войти с помощью Apple
6 июня 2022 г.
Добавлены сведения для входа с помощью Apple at Work & School, который поддерживает образовательные и корпоративные приложения, предлагающие возможности единого входа.
Посмотреть страницу
Игровой центр
6 июня 2022 г.
Добавлены сведения о последних функциях, включая переработанную панель управления и push-уведомления об активности в таблице лидеров.
Посмотреть страницу
Доступность
6 июня 2022 г.
Добавлены сведения о пользовательских синтезаторах речи и API быстрых действий.
Посмотреть страницу
ShazamKit
6 июня 2022 г.
Добавлены сведения о создании пользовательского каталога аудиоподписей и создании возможностей второго экрана или о создании функций, которые синхронизируются и реагируют на воспроизведение звука путем назначения метаданных в ключевые моменты времени.
Посмотреть страницу
Установка бета-версии программного обеспечения Apple
6 июня 2022 г.
Добавлено напоминание о включении нового режима разработчика перед тестированием приложений iOS 16, iPadOS 16 или watchOS 9 на устройстве.
Посмотреть страницу
Использование бета-версии программного обеспечения Apple
6 июня 2022 г.
Добавлено напоминание о включении нового режима разработчика перед тестированием приложений iOS 16, iPadOS 16 или watchOS 9 на устройстве.
Посмотреть страницу
Использование cktool
6 июня 2022 г.
Узнайте, как использовать приложение cktool для Mac для доступа к функциям, предоставляемым API консоли CloudKit, упрощая операции настройки CloudKit для локальной разработки и интеграционного тестирования.
Посмотреть страницу
Атрибуция объявлений с помощью SKAdNetwork и измерения частных кликов
6 июня 2022 г.
Узнайте, как рекламодатели могут соотносить свою рекламу с несколькими источниками, сохраняя при этом конфиденциальность пользователей.
Посмотреть новую страницу
Предлагает удалить учетную запись в вашем приложении
24 мая 2022 г.
Узнайте о требованиях для инициирования удаления учетной записи из приложения.
Посмотреть страницу
Внутренняя подпись кода: профили инициализации
3 мая 2022 г.
Узнайте, как профили подготовки позволяют запускать сторонний код на платформах Apple.
Посмотреть техническое примечание TN3215
Внутренняя подпись кода: хэши
3 мая 2022 г.
Загляните внутрь сигнатуры кода, чтобы узнать, как она использует хэши для защиты исполняемых страниц кода, ресурсов и метаданных от подделки.
Посмотреть техническое примечание TN3216
Внутренняя подпись кода: требования
3 мая 2022 г.
Узнайте, как macOS использует требования к подписи кода для обоснования идентичности кода.
Посмотреть техническое примечание TN3127
Маркетинговые инструменты App Store
3 мая 2022 г.
Добавлено более 20 языковых параметров (включая арабский, китайский, португальский, испанский и турецкий) для создания локализованных ресурсов. Маркетинговые инструменты App Store позволяют создавать маркетинговые активы для продвижения выпусков, предложений и обновлений в социальных сетях и т. д.
Посмотреть страницу
Символы SF 3
21 апреля 2022 г.
Выпущена версия SF Symbols 3.3 и обновлена ссылка для скачивания.
Посмотреть страницу
Оптимизация подписок для достижения успеха: приобретение
21 апреля 2022 г.
Узнайте, как привлечь подписчиков и расширить свой бизнес с помощью функций App Store. Мы рассмотрим стратегии привлечения подписчиков, поделимся передовым опытом реализации и покажем, как интегрировать эти процессы в ваше приложение для достижения успеха.
Посмотреть видео
Начните работу с кодами пользовательских предложений
21 апреля 2022 г.
Узнайте, как можно дополнить существующие кампании с кодами предложений настраиваемыми повторяемыми кодами, чтобы обеспечить еще большую гибкость для привлечения и удержания подписчиков. Мы познакомим вас с последними улучшениями, чтобы предложить коды, предоставим инженерные рекомендации, изучим передовой опыт и покажем, как создавать новые коды для ваших подписок.
Посмотреть видео
Металл
5 апреля 2022 г.
Добавлен образец кода Metal-cpp для включения функциональности Metal в графические приложения, игры и игровые движки, использующие заголовки Metal C++ с низкими издержками.
Посмотреть страницу
Распространение приложений для чтения со ссылкой на ваш сайт
30 марта 2022 г.
Узнайте, как запросить разрешение, которое позволяет приложениям для чтения ссылаться на веб-сайт, принадлежащий разработчику или поддерживаемый им, чтобы пользователи могли создавать свои учетные записи или управлять ими вне приложения.
Посмотреть страницу
Продвигайте свои приложения
30 марта 2022 г.
Узнайте, как вы можете использовать существующие инструменты App Store, рекламные предложения и многое другое для увеличения количества загрузок, покупок в приложении и подписки на ваше приложение.
Посмотреть статью
Руководство по пользовательскому интерфейсу
24 марта 2022 г.
Добавлены дополнительные рекомендации по отображению пользовательского экрана перед предупреждением о разрешении.
Посмотреть руководство
Съемка глубины с помощью камеры LiDAR
16 марта 2022 г.
Получите пример кода для доступа к камере LiDAR для получения точных данных о глубине.
Посмотреть пример кода
Fruta: Создание многофункционального приложения с помощью SwiftUI
10 марта 2022 г.
Пример проекта обновлен до:
Посмотреть пример проекта
Добавление в Apple Wallet и руководство по охране здоровья
2 марта 2022 г.
Добавлены локализованные ресурсы кнопок и информация для цифровых сертификатов COVID ЕС.
Просмотр инструкций
Поддержка транзакций строгой аутентификации клиентов (SCA)
1 марта 2022 г.
Добавлена информация для Великобритании.
Посмотреть документацию
Программа для малого бизнеса App Store
25 февраля 2022 г.
Разработчики, которые инициируют или принимают перенос приложений, теперь имеют право на членство.
Просмотр сведений о программе
Включить семейный доступ для ваших подписок
15 февраля 2022 г.
Узнайте, как предоставить доступ к автоматически возобновляемым подпискам пяти членам семьи.
Посмотреть статью
Переход на программу Apple Developer Program
9 февраля 2022 г.
Узнайте, как перейти с программы Apple Developer Enterprise на программу Apple Developer.
Посмотреть страницу
Технические примечания
8 февраля 2022 г.
Узнайте о конкретных темах разработки из этих подробных технических статей.
Посмотреть технические примечания
Справка по учетной записи разработчика
7 февраля 2022 г.
Добавлены инструкции по удалению зарегистрированных тестовых устройств при прекращении вашего членства.
Посмотреть руководство
Распространение приложений, не включенных в список
28 января 2022 г.
Узнайте, как выпускать приложения, которые не подходят для публичного распространения, как не указанные в App Store, которые можно найти только по прямой ссылке.
Посмотреть страницу
17 лучших блогов по разработке iOS для чтения в 2021 году
Блоги по разработке iOS
1. Блог Sarun
Sarun еженедельно публикует статьи о программировании iOS, языковых особенностях и архитектурных шаблонах для мобильных приложений. Недавние публикации посвящены работе со Swift, XCode и SwiftUI.
ПОПУЛЯРНОСТЬ:
Пользовательский макет в SwiftUI | Sarunw
iOS DevelopmentSwift
2,017
балла
2.
SwiftLee
Антуан пишет о XCode, iOS и Swift. Его статьи охватывают все: от производительности до сборки и запуска, Swift для начинающих, работы со SwiftUI и всего жизненного цикла разработки приложений.
ПОПУЛЯРНОСТЬ:
Замыкания Sendable и @Sendable объясняются примерами кода
iOS DevelopmentSwift
1380
балла
3. Use Your Loaf
Кит занимается созданием приложений для iOS с 2010 года и делится своими знаниями на Use Your Loaf. Недавние сообщения охватывают такие темы, как создание темных изображений во время выполнения, карты и виджеты, а также работа с библиотекой XCode. Блог обновляется несколько раз в месяц.
ПОПУЛЯРНОСТЬ:
Размер экрана iPhone 14
Разработка iOS
868
балла
4. Блог Донни Уолса
Донни — iOS-разработчик из Нидерландов, который пишет о работе со Swift и iOS. Сегодня он работает в Disney Streaming Services. Последние сообщения на его сайте посвящены работе с фреймворком Combine, созданным Apple.
TRENDING POST:
Enabling Concurrency warnings in Xcode 14 – Donny Wals
SwiftiOS Development
673
points
5. Swift with Majid
Majid is a Swift developer who writes about SwiftUI and curates a Swift newsletter called Еженедельник SwiftUI. Он пишет сообщения почти каждую неделю, охватывая такие темы, как стилизация пользовательских компонентов, управление фокусом, команды и сочетания клавиш.
Trends Post:
Mastering Mayout в Swiftui
Swiftios Development
643
очки
6. Swiftrocks
Бруно пишет о темах Swift и IOS, такие как щедрость, как apbreaks, как Swift Was Labifts, как Swift Was Labifts. Тестирование пользовательского интерфейса и другие темы, имеющие отношение к разработчикам Swift. Он работает в Spotify в Швеции.
ТРЕНДИНГ:
Какое ключевое слово «любое»? Понимание Type Erasure в Swift
iOS DevelopmentSwift
208
балла
7. Программирование с Крисом
Крис публикует учебные пособия, новости и обзоры, посвященные разработке iOS и программированию на Swift. Его внимание сосредоточено на том, чтобы помочь новичкам научиться создавать приложения шаг за шагом, даже если они не имеют опыта разработки мобильных приложений.
ТРЕНДИНГ:
Как сделать приложение в 2020 году от начала до конца (10 шагов)
iOS DevelopmentSwift
125
балла
8. Еще один блог Swift
Вадим пишет о разработке приложений на Swift. Его статьи посвящены модульному тестированию асинхронного кода и представлений в Swift, советам и рекомендациям по пользовательскому интерфейсу, таким как обработка бесконечной прокрутки списка и работа со SwiftUI.
TRENDING POST:
Понимание системы сборки Xcode
iOS DevelopmentSwift
80
баллы
9. Блог Маттео Манфердини
разработчик с современными инструментами и методами. Он рассказывает о передовых методах и шаблонах архитектуры для современных приложений, созданных с помощью Swift.
ПОПУЛЯРНАЯ СТАТЬЯ:
Лучшие и самые быстрые способы установки Xcode на ваш Mac
iOS DevelopmentSwift
63
балла
10. Five Stars
Исследуйте мир iOS, идеи и уникальные публикации Feder Swift последние инструменты, предлагаемые Apple. В недавних сообщениях рассказывается об использовании SwiftUI, создании удобных для контента макетов и обработке секретов.
ПОПУЛЯРНОСТЬ:
Как прочитать размер представления в SwiftUI | ПЯТЬ ЗВЕЗД
iOS DevelopmentSwift
61
баллов
11.
Блог Алексея Наумова
Алексей пишет о создании мобильных приложений на Swift для iOS. Некоторые из его недавних статей касаются споров между UIKit и SwiftUI при создании производственных приложений, странного поведения в состоянии SwiftUI и общих концепций разработки программного обеспечения, таких как разделение задач и чистая архитектура.
ТРЕНДИНГ:
Обратные вызовы, часть 2: замыкание, целевое действие и цепочка ответчиков
iOS DevelopmentSwift
43
балла
12. Блог Бенуа Паскье
Бенуа фокусируется на iOS и Swift. Он регулярно пишет в блогах о работе со Swift, пользовательским интерфейсом Swift, Catalyst, watchOS и, конечно же, о работе с XCode. Он французский инженер-программист, в настоящее время работает в Сингапуре.
ТРЕНДЫ:
Статический анализ приложений безопасности для iOS и Gitlab CI
SwiftiOS Development
40
балла
13.
Блог Эндрю Бэнкрофта
Эндрю — разработчик iOS и поклонник Swift. Он пишет в своем блоге о том, чему сейчас учится, затрагивая такие темы, как работа со старыми версиями XCode, SwiftUI и подведение итогов WWDC. Он также является автором Pluralsight.
SwiftiOS Development
балла
14. Блог Бена Шейрмана
Бен является создателем Combine Swift и пишет о разработке iOS в своем блоге. Он охватывает такие темы, как настройка Xcode, безопасность приложений для iOS и советы по работе с языком программирования Swift.
iOS DevelopmentSwift
балла
15. Блог Йеруна Зонневельда
Йерун рассказывает о своем путешествии по разработке мобильных приложений для iOS и Swift. Он пишет краткие руководства по созданию общих элементов пользовательского интерфейса с помощью Swift, таких как оповещения и формы. Он также охватывает другие аспекты жизненного цикла разработки приложений, такие как мониторинг отзывов для улучшения качества вашего приложения.
iOS DevelopmentSwift
балла
16. Блог Томаса Хэннинга
Томас является энтузиастом Swift и пишет в своем блоге о разработке iOS и программировании на Swift. Недавние сообщения охватывают такие темы, как равенство ссылок в Swift, структуры и классы, а также преимущества работы с SwiftUI по сравнению с UIKit.
SwiftiOS Development
балла
17. Робот Наташа
Наташа — инженер iOS, ведет блог о своем путешествии со Swift. Она также организует серию онлайн-семинаров Try Swift. Последние посты на ее сайте рассказывают о функциональном программировании, работе с Passkit и Apple Wallet и использовании watchOS.
iOS DevelopmentSwift
балла
Понравилась эта коллекция блогов по разработке iOS?
Мы пытаемся создать лучшее место для поиска качественного и креативного контента, написанного отдельными разработчиками и техническими экспертами. Помогите нам получить слово!
Поделиться в Твиттере
Читать блоги о программном обеспечении по связанным темам
Вернуться ко всем темам
Блоги Swift
Блоги Kotlin
Блоги разработчиков Android
сайт. Кроме того, спасибо всем, кто представил свои любимые блоги! Мы будем рады вашим предложениям о том, как сделать этот список лучше в Твиттере, @bloggingfordevs.
Еженедельный блог о разработке iOS
В этом блоге я делюсь своими рабочими процессами, советами и рекомендациями, инструментами,
и проблемами, которые я обнаружил в процессе.
Получайте еженедельные обновления о новых сообщениях
Последнее сообщение
Узнайте, как использовать UIView в качестве представления SwiftUI.
⋅
5 минут чтения
SwiftUI
UIKit
Последние сообщения | См. все
Как создать кнопку с закругленными углами в UIKit
Есть много способов создать кнопку с закругленными углами в UIKit на основе минимальной версии iOS, которую вы хотите поддерживать. Давайте научимся это делать.
⋅
4 мин чтения
UIKit
Кнопка
Как проверить, является ли строка числом в Swift
Изучите различные способы проверки того, является ли строка числом.
⋅
4 мин чтения
Swift
Актуальные истории
01
viewDidLoad() в SwiftUI
⋅
3 минуты чтения
SwiftUI
02
Список SwiftUI: основное использование
⋅
4 минуты чтения
SwiftUI
Список
03
Как представить нижний лист в iOS 15 с помощью UISheetPresentationController
⋅
9 мин чтения
UIKit
iOS 15
Лист
04
Как использовать UIViewController в SwiftUI
⋅
5 минут чтения
SwiftUI
UIKit
05
Что такое @escaping в закрытиях Swift
⋅
5 минут чтения
Свифт
Закрытие
06
Как показать/скрыть пробельные символы в Xcode
⋅
1 мин чтения
Xcode
07
Как получить индекс и значение из цикла for в Swift
⋅
4 мин чтения
Свифт
Поток управления
Массив
08
SwiftUI zIndex: все, что вам нужно знать
⋅
4 минуты чтения
SwiftUI
09
Вход с помощью руководства Apple, часть 3: серверная часть — проверка токена
⋅
11 минут чтения
Свифт
Войти с Apple
Скрытые жемчужины
01
Flutter: сколько времени вы экономите и какой ценой
⋅
10 минут чтения
Флаттер
Разработка
02
Знакомство с координатором
⋅
5 минут чтения
iOS
координатор
шаблон проектирования
03
Репликация 12 параметров UIKit contentMode в SwiftUI
⋅
4 минуты чтения
SwiftUI
Изображение
Изменение размера
04
Как протестировать макет пользовательского интерфейса для разных языков с помощью псевдоязыков
⋅
5 минут чтения
Xcode
Локализация
05
Переменный цвет в символах научной фантастики 4
⋅
3 минуты чтения
SwiftUI
Символы научной фантастики
WWDC22
iOS 16
06
MVC (отсутствует контроллер представления)
⋅
2 минуты чтения
Свифт
SwiftUI
iOS
МВК
Реактивный
Исследуйте темы | Узнать больше
Реактивный
перечисление
Динамический тип
Оператор
UILabel
Нить
Отзывчивый
шаблон проектирования
Цель-C
Рабочий процесс
Сопротивление сжатию содержимого
Символы научной фантастики
Локализация
Хэшируемый
Документация
SwiftUI: знакомство с новой декларативной структурой пользовательского интерфейса
Узнайте, как имитировать поведение viewDidLoad() в SwiftUI с помощью модификатора onAppear.
⋅
3 минуты чтения
SwiftUI
Для цикла в SwiftUI с использованием ForEach
При создании приложения иногда требуется создать повторяющееся представление или набор представлений из массива данных. Мы можем сделать это в SwiftUI с помощью ForEach.
⋅
3 минуты чтения
SwiftUI
Для каждого
Список
SwiftUI zIndex: все, что вам нужно знать
zIndex — это модификатор, который управляет порядком отображения перекрывающихся представлений в SwiftUI. Давайте узнаем, как это работает.
⋅
4 минуты чтения
SwiftUI
Список SwiftUI: основное использование
SwiftUI значительно упростил создание списка или табличного представления по сравнению с тем, как мы делаем это в UIKit. Давайте научимся им пользоваться.
⋅
4 минуты чтения
SwiftUI
Список
Больше сообщений о SwiftUI или
изучить другие темы
UIKit: узнайте лучшее из обоих миров
Другие сообщения о UIKit
Как создать кнопку с закругленными углами в UIKit
Есть много способов создать кнопку с закругленными углами в UIKit на основе минимальной версии iOS, которую вы хотите поддерживать. Давайте научимся это делать.
⋅
4 мин чтения
UIKit
Кнопка
Как использовать UIViewController в SwiftUI
Узнайте, как использовать UIViewController в качестве представления SwiftUI.
⋅
5 минут чтения
SwiftUI
UIKit
Расширенный, сжатый и сжатый шрифт SF: три новых стиля ширины шрифта в iOS 16
В iOS 16 Apple представляет три новых стиля ширины в семействе шрифтов SF. Давайте посмотрим, как они выглядят и как их использовать.
⋅
4 минуты чтения
SwiftUI
UIKit
Шрифт
Текст
iOS 16
WWDC22
Как использовать UIFont в шрифте SwiftUI
Узнайте, как преобразовать UIKit UIFont в шрифт SwiftUI.
⋅
1 мин чтения
SwiftUI
UIKit
Шрифт
Текст
Больше сообщений о UIKit или
изучить другие темы
Swift: изучите все аспекты языка
Другие сообщения о Swift
Как получить индекс и значение из цикла for в Swift
В Swift есть много способов получить индекс массива, но это может быть неочевидно. Давайте научимся это делать.
⋅
4 мин чтения
Свифт
Поток управления
Массив
Цикл n раз в Swift
В Swift существует множество способов зацикливания. В этом посте я покажу вам, как я поступаю, когда хочу зациклиться определенное количество раз.
⋅
2 минуты чтения
Свифт
Поток управления
Как сделать первую букву в Swift заглавной
Научитесь вводить в верхний регистр только первую букву слова и предложения.
⋅
2 минуты чтения
Свифт
Строка
Как сохранить перечисление со связанным значением в UserDefaults с помощью Swift
Давайте узнаем, как читать/записывать перечисление со связанным значением с UserDefaults.
⋅
5 минут чтения
Свифт
Пользовательские значения по умолчанию
Больше сообщений о Swift или
изучить другие темы
Xcode: узнайте советы и рекомендации по инструменту
Другие сообщения о Xcode
Маленькие большие улучшения в Xcode 14
Небольшие улучшения, которые имеют большое значение в повседневном кодировании.
⋅
2 мин чтения
Xcode
WWDC22
7 ярлыков Xcode для большого проекта iOS
В этой статье будут представлены семь ярлыков Xcode, которые помогут вам в большом проекте iOS. Приемы, которые вы собираетесь изучить, помогут вам найти и перейти к файлу/классу/символу в вашем большом и маленьком проекте.
⋅
6 минут чтения
Xcode
Разработка
Ярлык
Как исправить ошибку «Невозможно загрузить симулятор iOS»
Может быть несколько причин, вызывающих эту ошибку. Я поделюсь решением, которое работает для меня.
⋅
1 мин чтения
Xcode
Fastlane
Как протестировать макет пользовательского интерфейса для разных языков с помощью псевдоязыков
Каждый язык имеет свою особенность. Некоторые из них более многословны, чем другие. У некоторых есть специальные символы, которые занимают вертикальные пробелы. Некоторые даже читают и выкладывают справа налево. Давайте посмотрим, как убедиться, что ваш макет готов к этому.
⋅
5 минут чтения
Xcode
Локализация
Больше сообщений о Xcode или
изучить другие темы
Проекты
- Кодшот
Превратите свой код в снимок.
- Практический вход с помощью Apple
Пошаговое руководство по реализации входа с помощью Apple.
- чертовски SwiftUI
Шпаргалка SwiftUI
- Боже, черт возьми, SwiftUI
Более удобное зеркало для Fucking SwiftUI
- Под UITableView
Книга с картинками по программированию охватывает многие аспекты UITableView. Это забавный небольшой проект, который я сделал давным-давно.
- Программы
У меня есть несколько приложений в App Store, можете посмотреть.
Еженедельный блог о разработке iOS
Sarunw — Еженедельный блог о разработке iOS
акцентЦвет
Тревога
Анимация
Разработка приложений
Множество
Автоматический макет
Кнопка назад
Фон
бета
Блог
Критическое изменение
Кнопка
Стиль кнопки
Календарь
Катализатор
КИ
Закрытие
Какаподы
Кодируемый
Конструктор
Сопротивление сжатию содержимого
Обнимание контента
Поток управления
координатор
ЯдроРасположение
Темный режим
Дартс
Данные
Свидание
Форматирование даты
Отладка
Отладка
шаблон проектирования
Разработка
Делитель
Документация
Динамический тип
перечисление
Справедливый
полоса обгона
Флаттер
Шрифт
Для каждого
Фундамент
Смешной
Измерять
Жест
ПолучитьX
Гит
Гитхаб
Градиент
Сетка
Хэшируемый
HTML
IBSegueAction
Изображение
Инициализация
Интерн.
Конструктор интерфейсов
iOS
iOS 11
iOS 13
iOS 15
iOS 16
iOS13
JSON
Клавиатура
ключевой путь
Этикетка
Макет
Список
Локализация
macOS
matchedGeometryEffect
Модуль
МВК
Навигация
Панель навигации
НавигацияВью
Неоморфизм
Форматирование числа
Цель-C
Цель-C
Оператор
Оптимизация
Дорожка
Сборщик
Протокол
реактивный
Изменить размер
Отзывчивый
Строительные леса
Скриншот
ScrollView
доступный для поиска
Сегментированный контроль
Семантический
Символы научной фантастики
Тень
Форма
Лист
Ярлык
Войти через Apple
Симулятор
Эскиз
Сортировать
Статус бар
Раскадровка
Нить
Структура
Быстрый
Свифт 4. 1
Свифт 5.7
Быстрый пакет
SwiftUI
Шаблон
Тестирование
Текст
Текстовое поле
оттенокцвет
ToggleStyle
Панель инструментов
Переход
Туист
Кортеж
Руководство
UIImageView
UIKit
UILabel
UINavigationBar
Уисплитвиевконтроллер
UIStackView
UIStatusBarStyle
UITextView
UIToolbar
Модульное тестирование
Пользовательские значения по умолчанию
видео
ViewModifier
Код ВС
Рабочий процесс
WWDC20
WWDC22
Xкод
XCTest
Zстек
- оттенок цвета в SwiftUI
SwiftUI
оттенокцвет
акцентЦвет
- Как добавить текстовое поле в оповещение в SwiftUI
SwiftUI
Тревога
WWDC22 - Как представить оповещение в SwiftUI в iOS 15
SwiftUI
Тревога - Как показать несколько предупреждений в одном и том же представлении в SwiftUI
SwiftUI
Тревога
Просмотреть все Оповещение.
- Как исправить исчезновение представлений ZStack, не анимированное в SwiftUI
SwiftUI
Zстек
Переход
Анимация - Задержка анимации и RepeatForever в SwiftUI
SwiftUI
Анимация
- Как удалить Cocoapods из вашего проекта
Xcode
Какаподы
Разработка приложений
- Как получить индекс и значение из цикла for в Swift
Свифт
Поток управления
Множество - Сортировка массива объектов по нескольким свойствам с помощью Swift Tuple
Свифт
Сортировать
Множество
Кортеж - Как сортировать по нескольким свойствам в Swift
Сортировать
Множество
Просмотреть все Массив.
- Как изменить размер UIImageView, чтобы он соответствовал представлению контейнера, используя автоматическую компоновку
UIKit
UIImageView
Автоматический макет
Обнимание контента
Сопротивление сжатию содержимого
Изменить размер - Отзывчивый дизайн с UIStackView
UIKit
Отзывчивый
UIStackView
Автоматический макет - История ограничений Auto Layout
Свифт
Автоматический макет
- Как изменить цвет кнопки «Назад» во Flutter
Флаттер
Кнопка назад - Новый способ управления заголовком кнопки «Назад» в iOS 14 с помощью backButtonDisplayMode.
iOS
WWDC20
Кнопка назад - Что вы должны знать о стеке истории навигации в iOS 14
iOS
WWDC20
Критическое изменение
Кнопка назад
Просмотреть все Кнопка «Назад».
- Как установить цвет фона экрана в SwiftUI
SwiftUI
Фон - Как добавить фон к вашему представлению в SwiftUI
SwiftUI
Фон
- Изменения SwiftUI в Xcode 11 Beta 5
SwiftUI
iOS
бета - Изменения SwiftUI в Xcode 11 Beta 4
SwiftUI
iOS
бета - UISplitViewController в SwiftUI
SwiftUI
iOS
бета
Уисплитвиевконтроллер
Посмотреть все бета-версии.
- 2021 год: итоги года
Блог - 2020 Обзор
Блог
- Что вы должны знать о стеке истории навигации в iOS 14
iOS
WWDC20
Критическое изменение
Кнопка назад
- Как создать кнопку с закругленными углами в UIKit
UIKit
Кнопка - Как заставить кнопку SwiftUI с помощью buttonStyle расширяться до полной ширины
SwiftUI
Кнопка
Стиль кнопки - Как расположить изображение UIButton справа от текста
Кнопка
UIKit
Кнопка «Просмотреть все».
- Как заставить кнопку SwiftUI с помощью buttonStyle расширяться до полной ширины
SwiftUI
Кнопка
Стиль кнопки - Как сделать так, чтобы пользовательский стиль кнопки поддерживал синтаксис ведущей точки в SwiftUI
SwiftUI
Быстрый
Стиль кнопки - Стиль кнопки SwiftUI
SwiftUI
Стиль кнопки
Неоморфизм
- Представление календаря в SwiftUI с MultiDatePicker
SwiftUI
Календарь
WWDC22
iOS 16
- Как показать и скрыть боковую панель в приложении SwiftUI для macOS
SwiftUI
macOS
Катализатор - Как удалить данные UserDefaults на macOS и Catalyst
UserDefaults
Катализатор
macOS - Как сохранить/экспортировать изображение в Mac Catalyst
Катализатор
- Кэширование зависимостей в Github Actions
iOS
КИ
Рабочий процесс - Действия Github для проектов iOS
iOS
КИ
Рабочий процесс
- 7 способов передать замыкание в качестве аргумента в Swift
Свифт
Закрытие - Что такое @escaping в закрытиях Swift
Свифт
Закрытие
- Как удалить Cocoapods из вашего проекта
Xcode
Какаподы
Разработка приложений
- Как настроить автоматический синтез Codable для перечислений со связанными значениями
Свифт
перечисление
Кодируемый - Кодируемый синтез для перечислений со связанными значениями в Swift 5.5
Свифт
перечисление
Кодируемый - Декодировать массив с поврежденным элементом
Свифт
Кодируемый
JSON
Множество
Посмотреть все Кодируется.
- Как инициализировать переменные в теле конструктора в Dart
Флаттер
Дартс
Конструктор - Dart, инициализирующий формальные параметры
Флаттер
Дартс
Конструктор
- Как изменить размер UIImageView, чтобы он соответствовал представлению контейнера, используя автоматическую компоновку
УИКит
UIImageView
Автоматический макет
Обнимание контента
Сопротивление сжатию содержимого
Изменить размер
- Как изменить размер UIImageView, чтобы он соответствовал представлению контейнера, используя автоматическую компоновку
UIKit
UIImageView
Автоматический макет
Обнимание контента
Сопротивление сжатию содержимого
Изменить размер
- Как получить индекс и значение из цикла for в Swift
Свифт
Поток управления
Множество - Цикл n раз в Swift
Свифт
Поток управления - Как зациклить в Swift
Свифт
Множество
Поток управления
- Знакомство с координатором
iOS
координатор
шаблон проектирования
- Лучший способ запросить одноразовое местоположение пользователя с помощью кнопки «Местоположение».
iOS 15
ЯдроРасположение
Кнопка - Как запросить местоположение пользователя
CoreLocation
- Как отключить темный режим в iOS
iOS
UIKit
Темный режим - Шпаргалка темного цвета
iOS
Темный режим - Темный цвет
iOS
Темный режим
Просмотреть все Темный режим.
- Как инициализировать переменные в теле конструктора в Dart
Флаттер
Дартс
Конструктор - Dart, инициализирующий формальные параметры
Флаттер
Дартс
Конструктор - Параметры дротика
Флаттер
Дартс
- Как инициализировать @StateObject с параметрами в SwiftUI
SwiftUI
Данные - Что такое @Environment в SwiftUI
SwiftUI
Данные - Данные в SwiftUI, часть 3: инструменты
SwiftUI
iOS
Данные
Посмотреть все данные.
- Как разобрать дату ISO 8601 в Swift
Свифт
Форматирование даты
Свидание - Получение количества дней между двумя датами в Swift
Свифт
Свидание - Понимание даты и компонентов даты
Свифт
Свидание
- Как разобрать дату ISO 8601 в Swift
Свифт
Форматирование даты
Свидание - Как использовать DateFormatter в Swift
DateFormatter
Оптимизация
Быстрый - Насколько дорог DateFormatter
DateFormatter
Оптимизация
Быстрый
- Как использовать Proxyman с Flutter
Флаттер
Отладка - Как установить значение UserDefaults с аргументами запуска
Свифт
Отладка
Пользовательские значения по умолчанию - Как имитировать местоположение в Xcode и Simulator
Xcode
Разработка
Отладка
Просмотреть все Отладка.
- Вручную символизировать отчеты о сбоях
Xcode
Отладка
- Знакомство с координатором
iOS
координатор
шаблон проектирования
- Как получить идентификатор команды AppStore Connect и идентификатор команды портала разработчика для действий Fastlane
Полоса обгона
Разработка - 7 ярлыков Xcode для большого проекта iOS
Xcode
Разработка
Ярлык - Как подготовить проект iOS для поддержки модульной архитектуры
Развитие
Быстрый пакет
iOS
Модуль
Смотреть все Разработка.
- Разделитель в SwiftUI — все, что вам нужно знать
SwiftUI
Делитель
- Быстрая документация
Свифт
Документация
- Автоматическое масштабирование пользовательских шрифтов с помощью Dynamic Type
iOS 11
Динамический тип
UIKit
Шрифт
- Как настроить автоматический синтез Codable для перечислений со связанными значениями
Свифт
перечисление
Кодируемый - Кодируемый синтез для перечислений со связанными значениями в Swift 5.5
Свифт
перечисление
Кодируемый - Сохраняет ли перечисление Swift связанное с ним значение
Свифт
перечисление
Просмотреть все Перечисл.
- Сокращение шаблонного кода с автоматическим синтезом соответствия Equatable и Hashable
Свифт
Свифт 4.1
Справедливый
Хэшируемый
- Как получить идентификатор команды AppStore Connect и идентификатор команды портала разработчика для действий Fastlane
Полоса обгона
Разработка - Как исправить ошибку «Невозможно загрузить симулятор iOS»
Xcode
полоса обгона - Как вручную добавить существующие сертификаты в матч Fastlane
Полоса обгона
Разработка
Просмотреть все Полоса обгона.
- Как инициализировать переменные в теле конструктора в Dart
Флаттер
Дартс
Конструктор - Dart, инициализирующий формальные параметры
Флаттер
Дартс
Конструктор - Параметры дротика
Флаттер
Дартс
Просмотреть все Флаттер.
- SF Font Expanded, Condensed и Compressed: три новых стиля ширины шрифта в iOS 16
SwiftUI
UIKit
Шрифт
Текст
iOS 16
WWDC22 - Как использовать UIFont в шрифте SwiftUI
SwiftUI
UIKit
Шрифт
Текст - Как стилизовать текстовый шрифт SwiftUI
SwiftUI
Шрифт
Текст
Посмотреть все Шрифт.
- Для цикла в SwiftUI с использованием ForEach
SwiftUI
Для каждого
Список - Создайте список представлений в SwiftUI, используя ForEach
SwiftUI
Список
Навигация
Для каждого
- Новые форматтеры в iOS 15: зачем нам еще один форматтер
Фонд
Быстрый
iOS 15
- Sleep sort: Алгоритм сортировки без сравнения
Свифт
Смешной
Сортировать
- Индикатор SwiftUI
SwiftUI
Измерять
iOS 16
WWDC22
- Перемещайте взгляд с помощью жеста перетаскивания в SwiftUI.
SwiftUI
Жест
- Как создать наблюдаемые переменные из других наблюдаемых переменных в GetX
Флаттер
ПолучитьX
- Переместите самые последние коммиты в новую ветку с помощью git
Гит
Рабочий процесс
- Просмотрите Github PR с помощью веб-редактора.
Гитхаб
Разработка
- Как визуализировать текст с цветовым градиентом в SwiftUI
SwiftUI
Градиент
Текст - Градиент в SwiftUI
SwiftUI
Градиент
- Сетка SwiftUI
SwiftUI
Сетка
WWDC22 - CollectionView в SwiftUI с LazyVGrid и LazyHGrid
SwiftUI
Сетка
- Сокращение шаблонного кода с автоматическим синтезом соответствия Equatable и Hashable
Свифт
Свифт 4.1
Справедливый
Хэшируемый
- Как удалить лишние отступы при преобразовании HTML в NSAttributedString
UIKit
HTML - Как отображать HTML в UILabel и UITextView
UIKit
HTML
UILabel
UITextView
- Лучшее внедрение зависимостей для раскадровок в iOS13
Xcode
iOS
Конструктор интерфейсов
IBSegueAction
Раскадровка
- Как рисовать собственные пути и фигуры в SwiftUI
SwiftUI
Изображение
Форма
Дорожка - Как изменить цвет UIImage в Swift
UIKit
Изображение
оттенокцвет - Что такое режим рендеринга изображения в iOS
Изображение
Просмотреть все Изображение.
- Как сохранить поэлементный инициализатор структуры, если у вас есть собственный инициализатор
Свифт
Инициализация
Структура - Почленные инициализаторы для структурных типов
Свифт
Инициализация
Структура
- Как преобразовать строку в Int в Swift
Свифт
Нить
Интерн.
Форматирование числа
- Лучшее внедрение зависимостей для раскадровок в iOS13
Xcode
iOS
Конструктор интерфейсов
IBSegueAction
Раскадровка
- Изменение конфиденциальности UIPasteBoard в iOS 16
iOS
iOS 16 - Лучший способ получить пути к системным каталогам в iOS 16
iOS
iOS 16 - Как подготовить проект iOS для поддержки модульной архитектуры
Развитие
Быстрый пакет
iOS
Модуль
Посмотреть все iOS.
- Автоматическое масштабирование пользовательских шрифтов с помощью Dynamic Type
iOS 11
Динамический тип
UIKit
Шрифт
- Модальные изменения в iOS13
iOS
iOS 13
- Как представить нижний лист в iOS 15 с помощью UISheetPresentationController
UIKit
iOS 15
Лист - Как создать собственный стиль кнопки с помощью UIButton.Configuration в iOS 15
iOS 15
UIKit
Кнопка - Динамическая конфигурация кнопок в iOS 15
iOS 15
UIKit
Кнопка
Посмотреть все iOS 15.
- SF Font Expanded, Condensed и Compressed: три новых стиля ширины шрифта в iOS 16
SwiftUI
UIKit
Шрифт
Текст
iOS 16
WWDC22 - SwiftUI AnyLayout — плавные переходы между типами макета
SwiftUI
WWDC22
iOS 16
Макет - Индикатор SwiftUI
SwiftUI
Измерять
iOS 16
WWDC22
Посмотреть все iOS 16.
- Изменения UINavigationBar в iOS13, часть 2: UISearchController
iOS13
UIKit - UIRfreshControl с новым модальным стилем карты
UIKit
iOS13 - Создайте новый проект iOS12 в Xcode11.
Xcode
iOS13
Раскадровка
Посмотреть все iOS13.
- Декодировать массив с поврежденным элементом
Свифт
Кодируемый
JSON
Множество - Enum и пользовательский тип из примитивного типа JSON
Свифт
iOS
Кодируемый
JSON
перечисление - Кодируется в Swift 4.0
Свифт
iOS
Кодируемый
JSON
- Скрыть клавиатуру при прокрутке в SwiftUI с помощью scrollDismissesKeyboard
SwiftUI
WWDC22
iOS 16
Клавиатура
- Что такое KeyPath в Swift
Свифт
ключевой путь
- Как использовать метку в пользовательском представлении SwiftUI
SwiftUI
Этикетка - Метка SwiftUI: стандартный способ маркировки элементов пользовательского интерфейса.
SwiftUI
Этикетка
- SwiftUI AnyLayout — плавные переходы между типами макета
SwiftUI
WWDC22
iOS 16
Макет - Пользовательский макет в SwiftUI
SwiftUI
iOS 16
WWDC22
Макет - Внутренний размер контента в SwiftUI
SwiftUI
Макет
- Для цикла в SwiftUI с использованием ForEach
SwiftUI
Для каждого
Список - Список SwiftUI: основное использование
SwiftUI
Список - Как добавить кнопку на панель навигации в SwiftUI
SwiftUI
Список
См. весь список.
- Как протестировать макет пользовательского интерфейса для разных языков с помощью псевдоязыков
Xcode
Локализация
- Создайте приложение строки меню Mac в SwiftUI с помощью MenuBarExtra
macOS
WWDC22 - Как сбросить разрешение на push-уведомления в macOS
macOS - Как сделать приложение для панели меню MacOS
macOS
Посмотреть все macOS.
- Первый взгляд на matchedGeometryEffect
SwiftUI
WWDC20
matchedGeometryEffect
- Как подготовить проект iOS для поддержки модульной архитектуры
Развитие
Быстрый пакет
iOS
Модуль - Как разделить существующие проекты iOS на модули с помощью Swift Package
Развитие
Быстрый пакет
Модуль
iOS
- MVC (отсутствует контроллер представления)
Свифт
SwiftUI
iOS
МВК
реактивный
- Навигация в SwiftUI
SwiftUI
Список
Навигация
НавигацияВью - Представление списка, эквивалент UITableView в SwiftUI
SwiftUI
Список
Навигация - Как использовать ScrollView в SwiftUI
SwiftUI
Список
Навигация
ScrollView
Посмотреть все Навигация.
- Как изменить цвет панели навигации в SwiftUI на iOS 16
SwiftUI
WWDC22
iOS 16
Панель навигации - Изменения UINavigationBar в iOS13
iOS13
UINavigationBar
Панель навигации
- Навигация в SwiftUI
SwiftUI
Список
Навигация
НавигацияВью
- Стиль кнопки SwiftUI
SwiftUI
Стиль кнопки
Неоморфизм - Как создать неоморфный дизайн в SwiftUI
SwiftUI
Руководство
Неоморфизм
- Как преобразовать строку в Int в Swift
Свифт
Нить
Интерн.
Форматирование числа
- Где мой геттер/сеттер в Swift?
Свифт
Цель-C
- Что такое @discardableResult
Стриж
Цель-C
Семантический
- Как создавать собственные операторы и выполнять перегрузку операторов в Swift
Свифт
Оператор
- Как использовать DateFormatter в Swift
DateFormatter
Оптимизация
Быстрый - Насколько дорог DateFormatter
DateFormatter
Оптимизация
Быстрый
- Как рисовать собственные пути и фигуры в SwiftUI
SwiftUI
Изображение
Форма
Дорожка
- Как создать сегментированный элемент управления в SwiftUI
SwiftUI
Сборщик
Сегментированный контроль - Как использовать средство выбора SwiftUI
SwiftUI
Сборщик
- Как объявить протокол Swift для определенного класса
Свифт
Протокол - Протоколы только для класса: class или AnyObject
Свифт
Протокол
- MVC (отсутствует контроллер представления)
Свифт
SwiftUI
iOS
МВК
реактивный
- Как изменить размер представления изображения, чтобы оно соответствовало представлению контейнера в SwiftUI
SwiftUI
Изображение
Изменить размер - Воспроизведите 12 параметров contentMode UIKit в SwiftUI.
SwiftUI
Изображение
Изменить размер - Как изменить размер и положение изображения в UIImageView с помощью contentMode
UIKit
Изображение
Изменить размер
Просмотреть все Изменить размер.
- Отзывчивый дизайн с UIStackView
UIKit
Отзывчивый
UIStackView
Автоматический макет
- В чем разница между Tuist init и scaffold
Туист
Шаблон
Строительные леса
Xкод
Разработка - Леска Tuist: Как использовать шаблон Tuist для создания нового модуля для текущего проекта
Туист
Шаблон
Строительные леса
Xкод
Разработка - Tuist init: как использовать шаблоны Tuist для начальной загрузки вашего проекта
Туист
Шаблон
Строительные леса
Xкод
Разработка
- Сделайте скриншот и запишите видео в iOS Simulator
Симулятор
видео
Скриншот
- Как использовать ScrollView в SwiftUI
SwiftUI
Список
Навигация
ScrollView
- Всегда показывать панель поиска на панели навигации в SwiftUI
SwiftUI
доступный для поиска - Модификатор с возможностью поиска в SwiftUI: эквивалент UISearchController и UISearchBar
SwiftUI
доступный для поиска
- Как создать сегментированный элемент управления в SwiftUI
SwiftUI
Сборщик
Сегментированный контроль
- Что такое @discardableResult
Свифт
Цель-C
Семантический - Разверните необязательные значения в XCTest с помощью XCTUnwrap
Xcode
Модульное тестирование
Семантический - если позволите: как не использовать
Свифт
Семантический
- Переменный цвет в символах SF 4
SwiftUI
Символы научной фантастики
WWDC22
iOS 16 - Что такое вариант в SF Symbols
SwiftUI
Символы научной фантастики - Как изменить цвет символов SF
Символы SF
оттенокцвет
Посмотреть все символы SF.
- Сопоставьте тень вида с тенью эскиза
UIKit
Эскиз
Тень
- Как рисовать собственные пути и фигуры в SwiftUI
SwiftUI
Изображение
Форма
Дорожка
- Нижний лист в SwiftUI на iOS 16 с модификатором PresentationDetents
SwiftUI
iOS 16
Лист - Как представить нижний лист в iOS 15 с помощью UISheetPresentationController
UIKit
iOS 15
Лист
- 7 ярлыков Xcode для большого проекта iOS
Xcode
Разработка
Ярлык - 4 ярлыка Xcode, чтобы вернуть место на экране
Xcode
Разработка
Ярлык - 4 ярлыка Xcode для повышения производительности SwiftUI
SwiftUI
Xкод
Разработка
Ярлык
- Войдите в систему с помощью Apple Tutorial, часть 4: Интернет и другие платформы
Свифт
Войти через Apple - Войдите в систему с помощью Apple Tutorial, часть 3: серверная часть — проверка токена
Свифт
Войти через Apple - Войдите в систему с помощью Apple Tutorial, часть 2: Служба частной ретрансляции электронной почты
Свифт
Войти через Apple
Просмотреть все Войти через Apple.
- Запись видео симулятора iOS в формате mp4 и GIF с помощью Xcode
Xcode
Симулятор
видео - Быстрый способ открыть пользовательскую схему URL в iOS Simulator
Симулятор
Разработка - Сделайте скриншот и запишите видео в iOS Simulator
Симулятор
видео
Скриншот
- Сопоставьте тень вида с тенью эскиза
UIKit
Эскиз
Тень
- Сортировка массива объектов по нескольким свойствам с помощью Swift Tuple
Свифт
Сортировать
Множество
Кортеж - Как сортировать по нескольким свойствам в Swift
Сортировка
Множество - Различные способы сортировки массива строк в Swift
Свифт
Нить
Сортировать
Множество
См. все Сорт.
- Как изменить цвет строки состояния в SwiftUI
SwiftUI
Статус бар - Как изменить цвет текста строки состояния во Flutter
Флаттер
Статус бар - Как установить стиль строки состояния
UIKit
Статус бар
UIStatusBarStyle
- Создайте новый проект iOS12 в Xcode11.
Xcode
iOS13
Раскадровка - Лучшее внедрение зависимостей для раскадровок в iOS13
Xcode
iOS
Конструктор интерфейсов
IBSegueAction
Раскадровка
- Как сделать первую букву заглавной в Swift
Свифт
Нить - NSAttributedString в SwiftUI
SwiftUI
Нить - Различные способы проверить, содержит ли строка другую строку в Swift
Свифт
Нить
Просмотреть все Строка.
- Как сохранить поэлементный инициализатор структуры, если у вас есть собственный инициализатор
Свифт
Инициализация
Структура - Почленные инициализаторы для структурных типов
Свифт
Инициализация
Структура
- Как проверить, является ли строка числом в Swift
Свифт - Как получить индекс и значение из цикла for в Swift
Свифт
Поток управления
Множество - Цикл n раз в Swift
Свифт
Поток управления
Просмотреть все Свифт.
- Сокращение шаблонного кода с автоматическим синтезом соответствия Equatable и Hashable
Свифт
Свифт 4.1
Справедливый
Хэшируемый
- Новый if let сокращение для необязательной привязки
Свифт
Свифт 5.7
- Как подготовить проект iOS для поддержки модульной архитектуры
Развитие
Быстрый пакет
iOS
Модуль - Как разделить существующие проекты iOS на модули с помощью Swift Package
Развитие
Быстрый пакет
Модуль
iOS
- Как использовать UIView в SwiftUI
SwiftUI
UIKit - viewDidLoad() в SwiftUI
SwiftUI - Для цикла в SwiftUI с использованием ForEach
SwiftUI
Для каждого
Список
Просмотреть все SwiftUI.
- В чем разница между Tuist init и scaffold
Туист
Шаблон
Строительные леса
Xкод
Разработка - Леска Tuist: Как использовать шаблон Tuist для создания нового модуля для текущего проекта
Туист
Шаблон
Строительные леса
Xкод
Разработка - Tuist init: как использовать шаблоны Tuist для начальной загрузки вашего проекта
Турист
Шаблон
Строительные леса
Xкод
Разработка
Просмотреть все Шаблон.
- Как генерировать отчеты о покрытии кода в Xcode
Xcode
Тестирование - Как сделать так, чтобы пользовательские утверждения XCTest отображали ошибку на месте вызова
Тестирование
XCTest - Тестирование делегатов и протоколов в XCTest
Свифт
Тестирование
XCTest
Просмотреть все Тестирование.
- SF Font Expanded, Condensed и Compressed: три новых стиля ширины шрифта в iOS 16
SwiftUI
UIKit
Шрифт
Текст
iOS 16
WWDC22 - Как использовать UIFont в шрифте SwiftUI
SwiftUI
UIKit
Шрифт
Текст - Новый способ контролировать количество строк текста SwiftUI в iOS 16
SwiftUI
Текст
iOS 16
См. весь текст.
- Текстовое поле в SwiftUI
SwiftUI
Текстовое поле
- Как изменить цвет UIImage в Swift
UIKit
Изображение
оттенокцвет - Как изменить цвет символов SF
Символы SF
оттенокцвет - оттенок цвета в SwiftUI
SwiftUI
оттенокцвет
акцентЦвет
Посмотреть все tintColor.
- Настройка переключения SwiftUI
SwiftUI
ToggleStyle
- UIToolbar в SwiftUI
SwiftUI
UIToolbar
Панель инструментов
WWDC20
- Как исправить исчезновение представлений ZStack, не анимированное в SwiftUI
SwiftUI
Zстек
Переход
Анимация
- В чем разница между Tuist init и scaffold
Туист
Шаблон
Строительные леса
Xкод
Разработка - Леска Tuist: Как использовать шаблон Tuist для создания нового модуля для текущего проекта
Туист
Шаблон
Строительные леса
Xкод
Разработка - Tuist init: как использовать шаблоны Tuist для начальной загрузки вашего проекта
Турист
Шаблон
Строительные леса
Xкод
Разработка
Посмотреть все Tuist.
- Сортировка массива объектов по нескольким свойствам с помощью Swift Tuple
Свифт
Сортировать
Множество
Кортеж
- Как создать неоморфный дизайн в SwiftUI
SwiftUI
Руководство
Неоморфизм
- Как изменить размер UIImageView, чтобы он соответствовал представлению контейнера, используя автоматическую компоновку
UIKit
UIImageView
Автоматический макет
Обнимание контента
Сопротивление сжатию содержимого
Изменить размер
- Как использовать UIView в SwiftUI
SwiftUI
UIKit - Как создать кнопку с закругленными углами в UIKit
UIKit
Кнопка - Как использовать UIViewController в SwiftUI
SwiftUI
UIKit
Посмотреть все UIKit.
- Как отображать HTML в UILabel и UITextView
UIKit
HTML
UILabel
UITextView
- Как сделать прозрачную панель навигации в iOS
iOS
UINavigationBar - Что такое backIndicatorTransitionMaskImage
UIKit
UINavigationBar
Кнопка назад - Как изменить изображение кнопки «Назад»
UIKit
UINavigationBar
Кнопка назад
Просмотреть все UINavigationBar.
- UISplitViewController в SwiftUI
SwiftUI
iOS
бета
Уисплитвиевконтроллер
- UIStackView заполнение
UIStackView
UIKit - Пользовательский интервал UIStackView
UIStackView
UIKit - Отзывчивый дизайн с UIStackView
UIKit
Отзывчивый
UIStackView
Автоматический макет
- Как установить стиль строки состояния
UIKit
Статус бар
UIStatusBarStyle
- Как отображать HTML в UILabel и UITextView
UIKit
HTML
UILabel
UITextView
- UIToolbar в SwiftUI
SwiftUI
UIToolbar
Панель инструментов
WWDC20
- Разверните необязательные значения в XCTest с помощью XCTUnwrap
Xcode
Модульное тестирование
Семантический
- Как сохранить перечисление со связанным значением в UserDefaults с помощью Swift
Свифт
Пользовательские значения по умолчанию - Как сохранить enum в UserDefaults с помощью Swift
Свифт
Пользовательские значения по умолчанию - Как установить значение UserDefaults с аргументами запуска
Свифт
Отладка
Пользовательские значения по умолчанию
Просмотреть все пользовательские настройки по умолчанию.
- Запись видео симулятора iOS в формате mp4 и GIF с помощью Xcode
Xcode
Симулятор
видео - Сделайте скриншот и запишите видео в iOS Simulator
Симулятор
видео
Скриншот
- ViewModifier SwiftUI
Свифт
iOS
SwiftUI
ViewModifier
- Как изменить сочетание клавиш для IntelliSense в VS Code
Код ВС
Рабочий процесс
- Переместите самые последние коммиты в новую ветку с помощью git
Гит
Рабочий процесс - Как изменить сочетание клавиш для IntelliSense в VS Code
Код ВС
Рабочий процесс - Как создать приложение для macOS без файлов раскадровки или xib
macOS
Xкод
Рабочий процесс
Просмотреть все Рабочий процесс.
- Новый способ управления заголовком кнопки «Назад» в iOS 14 с помощью backButtonDisplayMode.
iOS
WWDC20
Кнопка назад - Что вы должны знать о стеке истории навигации в iOS 14
iOS
WWDC20
Критическое изменение
Кнопка назад - Перекрестное продвижение приложений с помощью SKOverlay
SwiftUI
UIKit
WWDC20
Посмотреть все WWDC20.
- SF Font Expanded, Condensed и Compressed: три новых стиля ширины шрифта в iOS 16
SwiftUI
UIKit
Шрифт
Текст
iOS 16
WWDC22 - SwiftUI AnyLayout — плавные переходы между типами макета
SwiftUI
WWDC22
iOS 16
Макет - Индикатор SwiftUI
SwiftUI
Измерять
iOS 16
WWDC22
Посмотреть все WWDC22.
- Как показать/скрыть символы пробела в Xcode
Xcode - Маленькие большие улучшения в Xcode 14
Xcode
WWDC22 - 7 ярлыков Xcode для большого проекта iOS
Xcode
Разработка
Ярлык
Посмотреть все Xcode.
- Как сделать так, чтобы пользовательские утверждения XCTest отображали ошибку на месте вызова
Тестирование
XCTest - Тестирование делегатов и протоколов в XCTest
Свифт
Тестирование
XCTest
- Как исправить исчезновение представлений ZStack, не анимированное в SwiftUI
SwiftUI
Zстек
Переход
Анимация
30 лучших блогов и веб-сайтов по разработке iOS в 2022 году
1. Apple Developer
Купертино, Калифорния, США
Узнайте о новейших технологиях, мероприятиях и политиках для разработчиков. Apple Inc. — американская транснациональная технологическая компания, специализирующаяся на бытовой электронике, программном обеспечении и онлайн-сервисах.
Также в мобильных блогах
developer.apple.co..
13,6 млн⋅ 8,5 млн ⋅ 4 сообщения в неделю Получить адрес электронной почты Контакт
2. Еженедельник разработчиков iOS
Подпишитесь на подборку лучших ссылок для разработчиков iOS каждую неделю. Куратор Дэйв Вервер и публикуется каждую пятницу. Свободно.
Также в блогах Apple
iosdevweekly.com
163⋅ 21,9K ⋅ 1 сообщение в неделю Получить адрес электронной почты
3.
Рэй Вендерлих | Учебники для iPhone и iOS-разработчиков и геймеров
Поддерживайте свои навыки Swift и iOS в актуальном состоянии с помощью практических руководств. Рэй Вендерлих — любимец всей команды V-Play. Это одно из лучших мест в Интернете для руководств по мобильным играм, так что посмотрите его как можно скорее. Рэй собрал очень опытную команду, обладающую знаниями в различных областях, что сделало этот блог одним из крупнейших авторитетов по разработке игр в Интернете.
Также в блогах о кодировании, блогах о мобильных приложениях
raywenderlich.com
15,7 тыс.⋅ 77,4 тыс. ⋅ 2 сообщения в неделю Получить адрес электронной почты
4.
Сообщество AppCoda | Изучите программирование для iOS и создайте приложение для iPhone
Гонконг
AppCoda — это блог по программированию для iOS. Наша миссия состоит в том, чтобы разработать высококачественные и простые для чтения учебные пособия по программированию iOS на Swift и Objective-C для всех, кто хочет изучать программирование iOS и заниматься разработкой приложений.
Также в блогах операционных систем
appcoda.com
19.9K⋅ 5.3K⋅ 772 ⋅ 1 сообщение в месяц ⋅ Март 2012 Получить адрес электронной почты
5.
Блог Оле Бегеманна
Берлин, Германия
Оле — разработчик iOS и Mac из Берлина. Он пишет о разработке программного обеспечения для платформ Apple с 2009 года. Хотя он публикует всего несколько статей в год, все они достойны прочтения. Вы можете подписаться, чтобы получать уведомления, как только он обновит новый.
Также в блогах по программированию на Swift
oleb.net
23,3K ⋅ 1 сообщение в месяц Получить адрес электронной почты
6. iOS на Stack Overflow | Избранные вопросы с тегом ios
Нью-Йорк, США
Избранные вопросы с тегом iOS на stackoverflow. com . Stack Overflow — крупнейшее интернет-сообщество для программистов, где они могут учиться, делиться знаниями и продвигаться по карьерной лестнице
stackoverflow.com/..
517.3K⋅ 195.2K ⋅ 1 сообщение в день Получить Email Контакт
7. Big Nerd Ranch
Атланта, Джорджия, США
Блог Big Nerd Ranch предлагает учебные пособия по разработке и дизайну приложений, советы и рекомендации по разработке программного обеспечения, а также советы по командному обучению и мобильным технологиям.
bignerdranch.com/r. .
9.7K⋅ 13K⋅ 3.5K ⋅ 1 сообщение в неделю Получить Email Контакт
8. The.Swift.Dev.
Будапешт, Венгрия
Еще один замечательный блог Swift, созданный Тибором Бодечем, гордым разработчиком мобильных приложений для iOS из Будапешта, Венгрия. Здесь Тибор любезно делится со своими читателями своим опытом кодирования на Swift. Одна из его любимых цитат «Swiftish»: «Если вы все еще пишете на Objective-C изо дня в день, вы пишете устаревший код». — Джеймсон Куэйв.
theswiftdev.com
3,9K ⋅ 1 сообщение в месяц Получить контакт по электронной почте
9.
iOSTutorialJunction
Чандигарх, Индия
iOSTutorialJunction предоставляет учебные пособия, помогающие в разработке приложений для IOS. Учебники варьировались от начального уровня до опытного. Следите за обновлениями.
iostutorialjunctio..
1 сообщение в неделю ⋅ окт. 2011 Get Email Contact
10. Донни Уолс
Нидерланды
Я любопытный и страстный разработчик iOS из Нидерландов, который любит учиться, делиться знаниями и программировать в целом. У меня есть опыт работы с несколькими технологиями, такими как Python, SQL, PHP, Javascript, но iOS уже давно стала моей страстью. Если вы ищете спикера для мероприятия или вам нужен кто-то, кто поможет вам с приложением, которое вы создаете, не стесняйтесь обращаться ко мне.
donnywals.com
5 сообщений в квартал Получить адрес электронной почты
11. Kazai Storyboard
Будьте в курсе статей из Kazai Storyboard. iOS-разработчик, независимый подрядчик, цифровой кочевник.
kazaimazai.com
110 ⋅ 1 сообщение в неделю Получить Email Контакт
12. Эрика Садун
Денвер, Колорадо, США
На днях Эрика обновляет свой блог, делясь своими мыслями по различным темам, включая iOS, приложения, Xcode, оборудование, программное обеспечение и FUN! Эрика также является автором книги «Поваренная книга быстрого разработчика».
ericasadun.com
22.2K Получить адрес электронной почты
13. Какао с любовью
Мельбурн, Виктория, Австралия
Продвинутые советы по программированию, приемы и лайфхаки для разработки Mac на C/Objective-C и Cocoa. Автор Мэтт Галлахер.
cocowithlove.com
12.8K Получить адрес электронной почты
14. NSHipster
Портленд, Орегон, США
NSHipster — это журнал пропущенных битов в Objective-C и Cocoa. Обновляется еженедельно.
nshipster.com
1.4K⋅ 33.1K Получить адрес электронной почты Контакт
15. Furbo.org
Лагуна-Бич, Калифорния, США
В Интернете есть много свежих качественных блогов о разработке для iOS, но если вы ищете настоящего первопроходца, загляните в блог Крейга Хокенберри. Он занимается бизнесом с 70-х годов и ведет блог уже более десяти лет.
furbo.org
25,6K ⋅ 2 сообщения в год Получить Email Контакт
16.
Блог OBJC
Германия
Objc.io публикует книги, видео и статьи о передовых методах разработки для iOS и macOS. Он предоставляет удобную и красиво оформленную страницу с более чем 20 вопросами по таким темам, как отладка, безопасность, игры, MVVM и многое другое. Мы также проводим семинары, посвященные продвинутым темам Swift и SwiftUI.
Также в блогах разработчиков мобильных приложений
objc.io/blog
38,7K ⋅ 5 сообщений в год Получить адрес электронной почты Контакт
17. NSBlog — Mac OS X и программирование Cocoa
Вашингтон, округ Колумбия, США
Блог Майка Эша. Действительно хорошо для изучения материала низкого уровня.
mikeash.com/pyblog
10.1K Получить адрес электронной почты
18. Think & Build — учебные пособия по OS X, iOS и веб-разработке!
Занудный блог для зануд! Здесь вы найдете учебные пособия и советы по iOS, OS X, PHP и многим другим. Яри Д’Ареглия — разработчик OS X, iOS и веб-приложений, работающий старшим разработчиком в Neato Robotics в Калифорнии.
thinkandbuild.it
2.3K Получить адрес электронной почты
19. Space-O Technologies — компания по разработке мобильных приложений
Индия
Читайте статьи об iPhone, Android, Python, PHP и мобильных приложениях на сайте Space-O Technologies и в официальном блоге. Space-O — это универсальное решение для всех ваших потребностей в разработке мобильного программного обеспечения. От концепции до разработки, маркетинга и текущего обслуживания Space-O обеспечивает.
космотехнологии..
3.4K⋅ 841 ⋅ 30 сообщений в год Get Email Contact
20. Кокоанетика
Австрия
Оливер Дробник так описывает кокоанетику: «Наша ДНК написана на Objective-C!». Вы найдете много полезных, но подробных примеров кода и узнаете много нового, связанного с Objective-C.
Cocoanetics.com/blog
31⋅ 19K ⋅ 2 сообщения в год Получить контакт по электронной почте
21.
Блог InvasiveCode
Сан-Франциско, Калифорния, США
Являясь цифровым агентством в Сан-Франциско, InvasiveCode фокусируется на создании передовых мобильных решений посредством консультирования и обучения iOS. В его блоге появилось обширное освещение фреймворков Apple и инструментов разработчика, которые могут быть вам полезны.
Invasivecode.com/w..
227⋅ 1.1K Получить адрес электронной почты Контакт
22. Блог разработчиков Swift
Оттава, Онтарио, Канада
Изучите Swift и разработку приложений для iOS. Блог Сергея Каргополова.
swiftdeveloperblog..
14.6K⋅ 458 ⋅ 1 сообщение в год Get Email Contact
23. That Thing In Swift
Как видно из названия блога, это все, что вам нужно знать о Swift. Несмотря на то, что сейчас Ник немного расширяет темы, чтобы дать более общий взгляд на то, что в настоящее время происходит в Swift, вы все равно узнаете много нового из его рассказов.
thatthinginwift.com
3.8K Получить адрес электронной почты
24.
Little Bites of Cocoa
Сан-Франциско, Калифорния, США
Советы и приемы разработки для iOS и Mac, утром в будние дни в 9:42. Цель каждого из этих «укусов» — дать читателю краткий обзор или объяснение конкретной концепции, техники или инструмента.
кусочки какао..
110⋅ 4.2K Получить контакт по электронной почте
25. Эндрю Кинг
Я работаю старшим разработчиком iOS в STAGE TEN, компании из Торонто, которая создает платформу для прямых трансляций для обычных людей, которые хотят создавать трансляции. Я также ранее работал в AT&T (которая приобрела моего предыдущего работодателя Quickplay). Там я участвовал в написании, проектировании, планировании, документации и тестировании промежуточного программного обеспечения для потоковой передачи видео, которое работает на клиентах iOS и написано как на Objective-C, так и на Swift.
andrewking.ca
9.6K Получить адрес электронной почты
26. eLearningiOSwift
Индия
Охватывает статьи о том, как разрабатывать приложения iOS с помощью Swift. eLearningiOSwift — это образовательный онлайн-блог, предназначенный в основном для iOS.
elearningswift.com
43 ⋅ 2 поста в квартал Get Email Contact
Ведущие авторы, журналисты и издатели, освещающие разработку iOS.
Имя блоггера | Ссылка на блог | Всего сообщений в блоге |
---|---|---|
raywenderlich.com | raywenderlich.com | 231 |
Сергей Каргополов | swiftdeveloperblog.com | 30 |
Ранчо больших ботаников | bignerdranch.com | 27 |
Бхавал Патель | spaceotechnologies.com | 18 |
Саймон Нг | appcoda.com | 17 |
Джигар Мистри | spaceotechnologies.com | 14 |
Сергей Казаков | kazaimazai.com | 14 |
Доннивалс | donnywals.com | 13 |
Любители iOS | elearningswift.com | 10 |
леойфонедев | iostutorialjunction.com | 8 |
Джон | stackoverflow. com | 7 |
Спейс-О Технологии | spaceotechnologies.com | 6 |
Крис | stackoverflow.com | 6 |
Оле Бегеманн | олеб.нет | 6 |
Чеок Ян Ченг | stackoverflow.com | 5 |
пользователь8460166 | stackoverflow.com | 5 |
Крейг Хокенберри | furbo.org | 4 |
нарнер | stackoverflow.com | 4 |
Пользователь | stackoverflow.com | 3 |
Дипак Шарма | stackoverflow.com | 3 |
Сэм | stackoverflow.com | 3 |
алионтего | stackoverflow.com | 3 |
Мак.Ловер | stackoverflow.com | 3 |
Амит Патолиа | spaceotechnologies. com | 3 |
Остин Конлон | stackoverflow.com | 3 |
Показать больше
Самые поучительные истории об Ios Development
Самые поучительные истории об Ios Development — Medium
2.4K
Stories
1.4K
Writers
Trending
Latest
Best
DevTechie
·17 hours ago
State Property Wrapper in SwiftUI
Property wrappers is a функция в Swift, которая была представлена примерно в то же время, что и SwiftUI, но нашла широкое применение в мире SwiftUI. Если вы хотите изучить основы оберток свойств, следуйте трем приведенным ниже сериям, чтобы узнать о них. Обертки свойств в…
Ios Development
5 min read
DevTechie
·1 день назад
Как создать тактильную обратную связь в SwiftUI действия и события.
В iOS многие компоненты, такие как средства выбора, переключатели и ползунки, автоматически обеспечивают тактильную обратную связь, но мы можем использовать генераторы обратной связи, чтобы добавить собственную обратную связь для пользовательских представлений или элементов управления. В…
Ios Development
2 min read
Güven Karanfil
·12 часов назад
Как найти потенциальные утечки памяти с помощью модульного тестирования — Swift сделать списки задач, чтобы показать. Мы собираемся определить соавтор класса (FetchTasks) для отправки запросов и получения результата. Этому соавтору потребуется класс, похожий на своего рода клиента, чтобы сделать реальный запрос и получить…
Ios Development
2 min read
Hüseyin Penbeoğlu
·1 день назад
Почему не стоит покупать iPhone 14 и ждать 15?
В этом году я планировал купить себе новый блестящий iPhone, потому что знал, что поддержка iOS для iPhone 8 скоро прекратится. Кроме того, физическое состояние моего телефона не в лучшем состоянии: быстро разряжается батарея, не работает кнопка «Домой» и есть некоторые трещины, поэтому я…
Ios Development
3 min read
Pavlos Simas
·2 days ago
Учебное пособие по шаблонам Xcode для iOS
Больше не нужно вручную создавать файлы и лучше следовать шаблону — в этом руководстве мы увидим, как создать собственный шаблон для Xcode, чтобы создавать несколько файлов одним щелчком мыши. В учебных целях мы создадим шаблон для шаблона MVVM. Для паттерна MVVM нам нужна модель, представление (контроллер) и модель представления, поэтому мы сделаем…
Ios Development
5 min read
Related Topics
I OS App Development
Swiftui
Mobile App Development
Programming
Swift Programming
I OS Apps
DevTechie
·2 days ago
Shake Animation с Animatable в SwiftUI
Протокол Animatable описывает, как анимировать представление с учетом некоторого изменения данных представления. Мы используем animable, когда хотим создать пользовательскую анимацию. Протокол Animatable дает нам детальный контроль над анимацией анимируемых значений представления SwiftUI. Он делает это, требуя animableData: AnimatableData, который…
Ios Development
3 min read
Sullivan De Carli
·2 days ago
SwiftUI и Firestore — упражнение CRUD
, обновлять и удалять документы с помощью SwiftUI и MVVM. — Сложность: Новичок | Легко | Нормальный | Сложная среда: репозиторий Xcode 14, iOS 16, MVVM, Firebase и SwiftUI в конце этой статьи Введение Приложение будет похоже на Apple Note, в нем будет возможность публиковать заметки, читать их, редактировать и …
Ios Development
5 min read
DevTechie
·3 days ago
Скрытый модификатор в SwiftUI
Скрытый модификатор используется для скрытия представлений. Скрытые представления невидимы и не получают и не реагируют на взаимодействия, но они остаются в иерархии представлений и занимают место в макете. Давайте соберем пример. Мы начнем с HStack и четырех представлений изображений. struct DevTechieHiddenExample: View…
Ios Development
2 min read
Cole Dennis
·3 days ago
Учебное пособие. Интеграция WeatherKit и Core Location в приложение SwiftUI Приложение SwiftUI. — В этом руководстве мы рассмотрим, как настроить приложение SwiftUI для iOS, которое интегрируется с WeatherKit и Core Location для отображения погоды в текущем местоположении пользователя. Настройка приложения SwiftUI Сначала мы настроим приложение SwiftUI, используя шаблон «Приложение» в XCode: я использую…
IOS Development
8 мин. Читать
Devtechie
· 4 дня назад
ContainErrelativeShape в Swiftui (ios 14+)
Контейнерат -костюш заменяется встроенной версией текущей формы контейнера. Если форма контейнера не была определена, заменяется прямоугольником. Эта форма была введена, чтобы соответствовать радиусу угла для прямоугольников со скругленными углами…
Development IOS
3 мин. Читать
2,4K
Истории
1,4K
Писатели
Связанные темпы
I APP Development
Мобильные приложения.
Swift Programming
Приложения I OS
Лучшие авторы
DevTechie
DevTechie создает обучающие программы на сайте www.youtube.com/DevTechie. Сайт https://www.DevTechie.com. Направление среднего членства https://devtechie.medium.com/membership
KD Knowledge Diet
Инженер-программист, разработчик мобильных приложений, проживающий в Сеуле. Я ненавижу людей, использующих сложные слова. Почему бы не использовать простые слова? Держать его просто глупо!
Lee Kah Seng
Поддержите меня, став участником Medium: https://leekahseng.medium.com/membership ⦿ 🇲🇾 Создатель https://swiftsenpai.com ⦿ Разработчик iOS с 2011 года
Steven Curtis
stevecurtis .me
Фархан Танвир
Верит в то, что нужно учиться на практике.