языка C Используется преимущественно в разработке для Mac и iOS Впервые серьезно был использован в 1988 году для ОС NextStep Вызов метода = отправка сообщения объекту [receiver message]; Сообщения могут перенаправляться другим объектам Актуальной на сегодня является версия Objective-C 2.0 Нередко критикуется за синтаксис и многословность Все объекты передаются по указателю NSObject *object = [[NSObject alloc] init];
Может использоваться в комбинации с Objective-C, C и C++ Допускает как ООП, так и функциональное программирование Актуальной на сегодня версией является 1.1 Значительно более лаконичен, чем Objective-C Полностью совместим со всеми фреймворками из iOS SDK Строго типизированный язык Переменные обязательно должны быть инициализированы Поддерживает обобщенное программирование, типизированные коллекции, перегрузку операторов, выведение типов и др.
NSString init(name : NSString) { self.name = name super.init() } func sayHelloWithName(NSString) { NSLog("Hello, \(name)! My name is \(self.name).") } } Пример кода … let person = Person(name: "Mikhail") person.sayHelloWithName("GDG") …
(void)sayHelloWithName:(NSString *)name; @end #import “Person.h" @implementation Person - (void)sayHelloWithName:(NSString *)name { NSLog(@"Hello, %@! My name is %@.”, name, self.name); } @end #import “Person.h" … Person *person = [[Person alloc] init]; person.name = @"Mikhail"; [person sayHelloWithName:@“GDG"]; … Objective-C import UIKit class Person : NSObject { let name : NSString init(name : NSString) { self.name = name super.init() } func sayHelloWithName(NSString) { NSLog("Hello, \(name)! My name is \ (self.name).") } } … let person = Person(name: "Mikhail") person.sayHelloWithName("GDG") … Swift
"Project-Bridging-Header.h" В данный заголовок попадают классы или протоколы Swift, наследуемые от NSObject или специально отмеченные @objc Некоторые элементы нельзя экспортировать, например: • Дженерики • Кортежи • Enums • Структуры • Функции высшего порядка • Глобальные переменные Не рекомендуется импортировать Swift в заголовки .h Objective-c, так как это может привести к зацикливанию. Используйте @class.
Header Прописанные в нем заголовки становятся доступны в Swift-файлах В Build Settings > Swift Compiler > Code Generation > Objective-C Bridging Header должен быть правильно указан путь к файлу Самостоятельно указывать директиву импорта не нужно
Стандартные виды (UILabel, UIButton, UITextView и др.) Средства для проектирования UI (Storyboards, Auto Layout) Системные контроллеры видов (Message UI, EventKit UI и др.) Локальные и Push-уведомления Многозадачность ОС (разрешения на работу в фоне) Стандартные контроллеры (UINavigationViewController и др.) Фреймворки UIKit, MapKit, Message UI, Address Book UI и др. Cocoa Touch
Text SceneKit, SpriteKit, OpenGL ES, GLKit, Metal Photos, Core Image Аудио Media Player, AV Foundation, OpenAL, Core Audio Видео AVKit, AV Foundation, Core Video Media Cocoa Touch
NSSet и др.) Различные сервисы (Core Location, Core Motion, CloudKit и др.) Фундаментальные фреймворки (Foundation, Core Foundation) Базовый класс для наследования (NSObject) NSString, NSNumber, NSData, NSDate, NSURL и др. Технологии многопоточный работы (GCD) Технология хранения и управления данными (Core Data) Работа с сетью, работа с файлами и др.
ядра, драйверы и др.) Безопасность (Touch ID, связка ключей, сертификаты и др.) Работа с внешними аксессуарами через Bluetooth Конфигурирование VPN-туннелей Многое другое
Например, классы Song или Album Занимается отрисовкой графического интерфейса (UIView и все его наследники) Например, класс AlbumView Является посредником между моделями и видами, координирующим их работу. Он реагирует на поведение пользователя, получает данные из моделей и отображает их с помощью видов
“Swift Programming Series” Книга 1: “The Swift Programming Language” Книга 2: “Using Swift with Cocoa and Objective-C” Правила проверки приложений при публикации в AppStore “App Store Review Guidelines” Обновленный стэнфордский курс по разработке для iOS “Developing iOS 8 Apps with Swift” Книги Мэтта Ньюбурга “iOS 7 Programming Fundamentals” (начальный уровень) “Programming iOS 8: Dive Deep into Views, View Controllers, and Frameworks” (продвинутый уровень, не для начинающих) Книги и материалы для изучения Краткий вводный курс от Apple “Start Developing iOS Apps Today”
Apple для iOS-разработчиков “iOS Developer Library” Тематические разделы на Хабрахабр http://habrahabr.ru/hub/ios_dev (и другие) Ответы на возникающие вопросы можно получить на Stackoverflow http://stackoverflow.com (обратите внимание на пользователя BBum) Форум разработчиков Apple (требуется аккаунт разработчика) https://devforums.apple.com Различные тематические сайты, персональные страницы и блоги: NSBlog (https://www.mikeash.com/pyblog) NSHipster (http://nshipster.com) и другие…
good. If you're interested, and put the time in, you can probably get good. But a lot of people come in with the impression that there are all these learning resources etc, and you just go through the Stanford lectures (or whatever) and that's it. The reality is it takes a long time. If you look at people who are really good at iOS, I think you will find that they still devote a lot of time to continuously learning new things. You have to adopt the mindset that there is a continuous process of learning.” — Drew Crawford, sealedabstract.com