Подразделы: Базовые типы 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 типы… Читать далее »
Adopting Cocoa Design Patterns (Адаптация Cocoa паттернов) Подразделы: Delegation (Делегирование) Error Handling (Обработка ошибок, Swift 2.0) Key-Value Observing (наблюдатель за изменениями в свойствах объектов) Target-Action (Цель-Действие) Introspection (Самонаблюдение) API Availability (доступность API) Swift 2.0 Delegation (Делегирование) Пожалуй самый часто используемый паттерн, реализуется с помощью свойства в которое сохраняется делегат. Главный подводный камень – не забыть проверить что делегат не равен… Читать далее »
Подразделы: 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, и… Читать далее »
В Objective-C нет пространств имен, в swift есть. К примеру полное имя класс SwiftTestClass в приложении SwiftTest из главы Взаимодействие swift с Objective-C будет SwiftTest.SwiftTestClass. Важно это не забывать когда приходится работать с api принимающем имя класса как строку.
В Objective-C был атрибут @dynamic, в swift используется атрибут @NSMAnaged для обозначения свойств имеющих связь в модели CoreData. Не забываем что классы в Swift используют пространства имен, не забываем его указывать в поле Class
Strong/Weak (сильные/слабые) По умолчанию свойства сильные. Можно применить к свойству ключевое слово weak, но только если они имеет тип опционала. Более подробно смотри Automatic Reference Counting (Автоматический подсчет ссылок) Read/Write и Read-Only (чтение/запись и только для чтения) У Swift‘а нет специальный ключевых слов для того чтобы определить данный аспект. Если для хранимых свойств нужно Read-Only – используем let, нужно read/write… Читать далее »
Outlet (ссылка на элемент интерфейса) и action (метод вызываемый из интерфейса элементом) – позволяют связывать исходный код с объектами интерфейса в Interface Builder. В swift чтобы их использовать надо предварить определение метода или свойства атрибутом @IBOutlet или @IBAction соответственно. Для outlet colletcion – также используется @IBOutlet, просто в качестве типа – массив. Т.к. связывание элементов интерфейса с кодом происходит в… Читать далее »
Основы были описаны в Initialization (Инициализация) и Deinitialization (Деинициализация) Если swift класс был унаследован от Objective-C, он конвертирует инициализаторы тоже. Если же нужна дополнительная очистка перед тем как класс будет уничтожен можно реализовать свой деинициализатор вместо метода dealloc. Swift деинициализатор вызывается прямо перед деаллокацией. Swift для классов унаследованных от Objective-C сам вызывает dealloc.
В Swift мы можем создать класс унаследовав его от Objective-C класса точно так же как мы можем наследоваться от swift классов.
Swift
1
2
3
4
5
importUIKit
classMySwiftViewController: UIViewController{
}
Если класс должен реализовать протокол NSCoding – необходимо реализовать инициализатор init(coder:). Если наследник класса реализующего протокол NSCoding получает дополнительные инициализаторы или любое свойство без начального значения – они тоже должны переопределять этот инициализатор. У XCode есть код заглушка… Читать далее »
В Objective-C селектор – это тип указывающий на имя метода. В Swift селекторы представлены структурой Selector, причем создавать ее можно с помощью обычной строки
Swift
1
letmySelector:Selector="tappedButton:".
Поэтому везде где код ждет селектор – можно использовать строку
Но в Swift запретили использовать performSelector и иже с ним, т.к. это небезопасно Если Swift класс унаследован от Objective-C все методы и свойства –… Читать далее »