Архив рубрики: Swift документация

Cocoa, Swift, Objective-C: Взаимодействие swift с Objective-C

Подразделы: Как использовать совместно Objective-C и swift из одного Framework Target При использовании swift из Objective-C мы не можем пользоваться специфическими фишками языка swift Naming Your Product Module (именование модуля продукта) Подводные камни Как использовать совместно Objective-C и swift из одного App Target Если мы пишем обычное приложение и хотим сделать импорт Objective-C для работы в swift необходимо создать Objective-C… Читать далее »

Swift 2.0: Checking API Availability (Проверка доступности API)

Теперь мы всегда в runtime узнать на какой именно платформе мы запущены и применить специфические функции в случае если они доступны с помощью #available

Доступны проверки для iOS, OSX, watchOS, iOSApplicationExtension, OSXApplicationExtension Звездочка обязательна, она означает что этот код будет доступен не только для указанных платформ но и для будущих (иначе после каждого релиза ОС пришлось бы добавлять новые… Читать далее »

Swift 2.0: Error Handling (Обработка ошибок)

В Swift 2.0 наконец добавили обработку ошибок. Для представления ошибок добавили протокол ErrorType. В основном для создания своих ошибок создают перечисление реализующее этот протокол

При чтении файла допустим мы будем обрабатывать 2 ситуации, пустой путь и отстутствие прав на чтение (needUser будет указывать учетную запись владельца файла) Чтобы обозначить, что функция/метод могут выбрасывать ошибки наружу — ввели ключевое слово… Читать далее »

Swift: Custom Operators (Пользовательские операторы)

Мы можем определить абсолютно новые операторы (подробней по разрешенным символам для названия оператора лучше смотреть в документации) Требования те же что и к переопределенным, нужно определять на глобальном уровне, можно использовать модификаторы prefix, infix или postfix К примеру пусть будет оператор +++ удваивающий вектор. Сначала определим сам оператор

А затем конкретную функцию его реализующую

Для наших новых infix… Читать далее »

Swift: Operator Functions (Операторные функции)

Мы можем переназначать для структур и классов операторы +, —, и т.д.

Обратим внимание, что функция определена не внутри структуры, а определена как глобальная Это позволит нам беспроблемно складывать векторы.

оператор + инфиксный и бинарный (должен находиться между двух операндов) Так же можно переопределить унарные операторы, например ++ или —. Причем как префиксные -a, так и постфиксные a++…. Читать далее »

Swift: Precedence and Associativity (приоритет и ассоциативность)

У операторов существует приоритет, на основании которого решается какой оператор будет выполнен первым (например умножение выполнится раньше сложения) Если же приоритет равен рассматривается ассоциативность, определяющая как операторы группируются — слева или справа Например это выражение равно 4 2 + 3 * 4 % 5 Но если бы мы не следовали приоритетам наши шаги были бы следующие 2 + 3 =… Читать далее »

Swift: Overflow Operators (Операторы переполнения)

Основное отличие от C — арифметически операции в Swift выполняются без переполнения, чтобы переполнение было, — необходимо перед оператором поставить знак амперсанда & (&+ к примеру) Т.е. по умолчанию при переполнении swift выкидывает ошибку и выполнение программы прерывается.

Чтобы избежать ошибки надо использовать операторы переполнения — сложение &+ — вычитание &- — умножение &* Переполнение может случиться как в… Читать далее »

Swift: Операции с битами

— оператор NOT (логическое НЕ, инвертирует все биты, ~)

UInt8 — целые беззнаковые числа в диапазоне от 0 до 255 — оператор AND (логическое И, выдаст 1, если оба бита = 1, &)

— оператор OR (логическое ИЛИ, выдаст 1 если хоть один бит = 1, ||)

— оператор XOR (логическоле ИЛИ-НЕ, выдаст 1 если биты разные,… Читать далее »

Swift: Access Control (контроль доступа)

Мы будем называть все к чему можно применить контроль доступа — записи (entries) Контроль доступа ограничивает доступ к указанным записям в других исходных файлах и модулях. Уровень доступа можно назначить как типам, так и их членам. Существует так же права доступа по умолчанию, чтобы не приходилось их выставлять для всех членов. Уровень по умолчанию — internal Модуль — отдельная единица… Читать далее »

Swift: Generics (Универсальные шаблоны)

Если бы библиотеки писали под конкретные классы, нас бы ждало дублирование кода, очень много дублирования кода, и много приведения типов.

И так для каждого типа. Но лучше определить функцию которая будет работать с любым типом

— после имени функции, где T — заполнитель, указывающий на то как будет называться тип (в нашем случае переменные a и b —… Читать далее »