Архив метки: swift 2.0

Swift: Глоссарий

Access Control — Контроль доступа Associated Types — Связанные типы Associated values — Связанные значения Associativity — ассоциативность Automatic Reference Counting — Автоматический подсчет ссылок Bridging Header — Связующий заголовок Capture values — Захват переменных Capture List — Список захвата Closures — Замыкания Compound Assignment Operators — Составные опреаторы присваивания Computed Properties — Вычисляемые свойства Convenience initializer — вспомогательный инициализатор… Читать далее »

Cocoa, Swift, Objective-C: Interacting with C APIs (Взаимодействие с C API)

Подразделы: Базовые типы Enumerations (перечисления) Option Sets (наборы опций) Unions (Объединения) Pointers (Указатели) Function Pointers (Указатели на функции) Global Constants (глобальные константы) Preprocessor Directives (Директивы препроцессора) Macros (Макросы) Build Configurations (конфигурации билдов) Swift предоставляет эквивалент C примитивам целого типа — char, int, float, double, но между C int и Swift Int к примеру нет неявного преобразования. Предпочтительней использовать Swift типы… Читать далее »

Cocoa, Swift, Objective-C: Adopting Cocoa Design Patterns (Адаптация Cocoa паттернов)

Adopting Cocoa Design Patterns (Адаптация Cocoa паттернов) Подразделы: Delegation (Делегирование) Error Handling (Обработка ошибок, Swift 2.0) Key-Value Observing (наблюдатель за изменениями в свойствах объектов) Target-Action (Цель-Действие) Introspection (Самонаблюдение) API Availability (доступность API) Swift 2.0 Delegation (Делегирование) Пожалуй самый часто используемый паттерн, реализуется с помощью свойства в которое сохраняется делегат. Главный подводный камень — не забыть проверить что делегат не равен… Читать далее »

Cocoa, Swift, Objective-C: Working with Cocoa Data Types (Работа с Cocoa типами данных)

Подразделы: Strings (строки) Numbers (числа) Collection Classes (классы коллекций) Swift 2.0: Errors (Ошибки) Foundation Data Types (Типы данных foundation) Foundation Functions (функции Foundation) Core Foundation Unmanaged Objects (Неуправляемые объекты) Существуют типы в Swift и Objective-C, которые являются взаимозаменяемыми (bridged). Например NSString и String, NSArray и Array Strings (строки) Везде где в API ожидается NSString мы можем подставлять Swift String, и… Читать далее »

Cocoa, Swift 2.0, Objective-C: Lightweight Generics (легковесные дженерики)

Наконец добавили типизированность в Objeсtive-C, но к сожалению в ограниченном обьеме — только для коллекций. К примеру Objective-C код

будет импортирован в swift как

Но, повторюсь доступно это лишь для Foundation стандартных коллекций

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: Generics (Универсальные шаблоны)

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

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

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

Swift 2.0: Protocol Extensions (Расширения протоколов)

В swift 2.0 добавили возможность расширить не конкретный класс, а протокол, добавив методы и свойства

Таким образом все типы, которые будут реализовывать этот протокол — получат доступ к методу из расширения.