Содержание
Умер создатель Objective-C, языка программирования «маков», iPhone и iPad
ПО
Софт
Кадры
|
Поделиться
Брэд Кокс, разработавший язык программирования Objective-C, скончался, не дожив до своего 77-летия. Сейчас его творение используется в macOS и iOS – операционных системах Apple, несмотря на то, что у нее есть собственный язык – Swift, тоже основанный на Objective-C.
Objective-C остался без создателя
Автор языка программирования Objective-C Брэд Кокс (Brad Cox) умер на 77 году жизни. Он скончался 2 января 2021 г., но о его смерти, причины которой пока не раскрываются, стало известно лишь сейчас.
Брэд Кокс родился 2 мая 1944 г. Он питал страсть к наукам, что привело его в Университет Фурмана (США), где он получил степень бакалавра в области математики и органической химии. Позже он получил докторскую степень в университете Чикаго (США) по математической биологии.
Прежде, чем связать свою жизнь с программным обеспечением, Брэд Кокс работал в Национальном институте здравоохранения и Океанографическом институте Вудс-Холла.
Среди его самых первых программ числится небольшая утилита для мини-компьютера PDP-8, предназначавшаяся для моделирования кластеров нейронов.
Совместная работа над Objective-C
Брэд Кокс также успел поработать в американской телекоммуникационной компании International Telephone and Telegraph (ITT) и исследовательской лаборатории Schlumbeger-Doll перед тем, как в 1983 г. в возрасте 39 лет основать собственную компанию. Она получила название Productivity Products International в Коннектикуте (США), хотя позже сменила его на Stepstone. У истоков этого предприятия вместе с Коксом стоял его партнер по бизнесу Том Лав (Tom Love).
Кокс и Лав вместе работали в International Telephone and Telegraph, и с объектно-ориентированными языками программирования они оба впервые познакомились в 1981 г., узнав о существовании языка Smalltalk с динамической типизацией. Это детище научно-исследовательского центра Xerox PARC, разработанное его специалистами в 70 годах XX века.
Первый офис Stepstone располагался в здании завода
Точная дата создания Objective-C на момент публикации материала известна не была, но первые упоминания о нем датируются именно началом 80 годов XX века, когда Кокс и Лав еще работали в ITT и только планировали начать собственный бизнес. Основным направлением их стартапа Stepstone стала разработка программного обеспечения, и Том Лав тоже участвовал в разработке Objective-C.
Как Objective-C появился у Apple
Первая реализация языка Objective-C была выпущена уже после открытия Stepstone. В 1988 г. основатель Apple Стив Джобс (Steve Jobs), работая на тот период времени в другой его компании (NeXT) лицензировал Objective-C у стартапа Кокса и Лава для использования в своей операционной системе NeXTSTEP, а также для создания OpenStep – объектно-ориентированного интерфейса программирования приложений (API) для объектно-ориентированных ОС.
Как «Тинькофф» проводит встречи и обучает 20 000 сотрудников ежемесячно
Импортозамещение ВКС
В 1996 г. Apple купила NeXT вместе со всеми ее наработками и стала использовать OpenStep для разработки новой операционной системы Mac OS X, использующейся на компьютерах и ноутбуках компании до сих пор, но известной сейчас как macOS. В дальнейшем Objective-C и все, что с ним было связано, лег в основу мобильной платформы Apple для смартфонов и планшетных компьютеров – iOS.
Objective-C входит в топ-20 самых востребованных языков программирования
Objective-C по-прежнему остается основным языком для macOS и iOS. Несмотря на то, что в июне 2014 г., уже после смерти Стива Джобса, Apple представила свой собственный язык программирования Swift. Она назвала его «Objective-C без C».
На январь 2021 г. Objective-C входил в рейтинг самых популярных языков программирования в мире (индекс TIOBE). В нем он занимал 18 строчку, хотя год назад располагался на 13 месте.
Другие достижения Брэда Кокса
Несмотря на то, что Брэд Кокс известен в первую очередь как создатель Objective-C, за его плечами также есть две известные в своих кругах книги – «Объектно-ориентированное программирование: эволюционный подход», которую он опубликовал в 1991 г., и «Суперраспределение: объекты как собственность на электронных границах». Эта книга вышла в 1996 г., и в дальнейшем она была переведена на 10 языков мира.
Дроны, роботы и VR: какие инновации востребованы в металлургии
Инновации для промышленности
Карьера Брэда Кокса после продажи Stepstone продолжилась в несколько иной для него области – в сфере образования. В частности, он присоединился к Программе социального и организационного обучения Университета Джорджа Мейсона (США) и разработал для него первые онлайн-курсы через Интернет.
Уйдя по неизвестным причинном из образовательного сектора, Кокс стал строить карьеру в сфере государственного консультирования. Его деятельность здесь включала работу в Пентагоне, а также в компании Boeing – крупном производителе самолетов. В последние годы своей жизни Кокс вернулся в ИТ-сферу – он занялся изучением нейросетей и работал над применением машинного обучения и науки о данных для обеспечения кибербезопасности.
- В каком ЦОД разместить оборудование Colocation? Найти ответ на ИТ-маркетплейсе Market.CNews
Эльяс Касми
Foundations of Objective-C App Development
Об этом курсе
Недавно просмотрено: 4 151
An introduction to the Objective-C programming language. This will prepare you for more extensive iOS app development and build a foundation for advanced iOS development topics.
Гибкие сроки
Гибкие сроки
Назначьте сроки сдачи в соответствии со своим графиком.
Сертификат, ссылками на который можно делиться с другими людьми
Сертификат, ссылками на который можно делиться с другими людьми
Получите сертификат по завершении
100% онлайн
100% онлайн
Начните сейчас и учитесь по собственному графику.
Специализация
Курс 1 из 6 в программе
Специализация Разработка iOS-приложений для творческих предпринимателей
Часов на завершение
Прибл. 15 часов на выполнение
Доступные языки
Английский
Субтитры: Арабский, Французский, Португальский (Европа), Итальянский, Вьетнамский, Немецкий, Русский, Английский, Испанский
Приобретаемые навыки
- iOS App Development
- Computer Programming
- Xcode
- Objective-C
Гибкие сроки
Гибкие сроки
Назначьте сроки сдачи в соответствии со своим графиком.
Сертификат, ссылками на который можно делиться с другими людьми
Сертификат, ссылками на который можно делиться с другими людьми
Получите сертификат по завершении
100% онлайн
100% онлайн
Начните сейчас и учитесь по собственному графику.
Специализация
Курс 1 из 6 в программе
Специализация Разработка iOS-приложений для творческих предпринимателей
Часов на завершение
Прибл. 15 часов на выполнение
Доступные языки
Английский
Субтитры: Арабский, Французский, Португальский (Европа), Итальянский, Вьетнамский, Немецкий, Русский, Английский, Испанский
Преподаватели
Don Patterson
Associate Professor
Informatics and Computer Science
52 622 учащихся
5 курсов
Sam Kaufman
Partner at Gradient
52 622 учащихся
5 курсов
от партнера
Калифорнийский университет в Ирвайне
Since 1965, the University of California, Irvine has combined the strengths of a major research university with the bounty of an incomparable Southern California location. UCI’s unyielding commitment to rigorous academics, cutting-edge research, and leadership and character development makes the campus a driving force for innovation and discovery that serves our local, national and global communities in many ways.
Рецензии
4.6
Filled StarFilled StarFilled StarFilled StarHalf Filled Star
Рецензии: 180
5 stars
75,09 %
4 stars
18,18 %
3 stars
3,45 %
2 stars
1,45 %
1 star
1,81 %
Лучшие отзывы о курсе FOUNDATIONS OF OBJECTIVE-C APP DEVELOPMENT
Filled StarFilled StarFilled StarFilled StarFilled Star
от партнера BI10 янв. 2016 г.
Great course to start IOS development!
I want more!
Please put another class with the UX design for IOS apps, please!
Filled StarFilled StarFilled StarFilled StarFilled Star
от партнера SC14 нояб. 2015 г.
The teacher explains very well the concepts behind the objective-c language.
The pointers part is explained very well.
Filled StarFilled StarFilled StarFilled StarFilled Star
от партнера MM11 мар. 2016 г.
Very good start for everyone who want to learn Objective-C language and get basic IOS development skills as well.
Filled StarFilled StarFilled StarFilled StarFilled Star
от партнера AR13 мар. 2016 г.
Make time for these rewards, especially if you want to learn more iOS apps and literally get your hands on the technology ASAP.
Посмотреть все отзывы
Специализация Разработка iOS-приложений для творческих предпринимателей: общие сведения
This Specialization focuses on the basics of iOS application development. You’ll gain the skills you need to create your own app, including fluency in Objective-C and UIKit and SpriteKit user interface concepts, and you’ll learn to leverage networking, security, audio, video, location, and sensor frameworks. In the final Capstone Project, you’ll apply your skills to create a networked game that leverages sensors on the phone to create a unique gaming experience, and that you can showcase in job applications and interviews or offer in the iTunes store.
Часто задаваемые вопросы
Когда я получу доступ к лекциям и заданиям?
Что я получу, оформив подписку на специализацию?
Можно ли получить финансовую помощь?
Остались вопросы? Посетите Центр поддержки учащихся.
Разработка приложений на Objective-C для iOS: iPhone, iPad, MacOS X приложения на заказ
PNN Soft — надежный партнер-разработчик приложений на Objective-C в сфере B2B и B2C. Мы внедрили большое количество решений за более чем 20 лет своего существования на международном IT-рынке. Наши квалифицированные и опытные специалисты используют инновационные и в то же время проверенные инструменты для создания масштабируемых и стабильных приложений под iOS. Мы реализовали множество эффективных, интуитивно понятных решений для устройств Apple. PNN Soft предлагает клиентам аутсорсинговую разработку приложений с использованием Objective-C.
Наши технологические компетенции в области Objective-C разработки:
Технологии
- Cocoa, Cocoa Touch, Swift Core Libraries
- XCode, SQLite, CocoaPods, Third-party libraries
- Firebase, Crashlytics
Операционные системы
- OS X, iOS
Процесс разработки
- MySQL, SQLite, MongoDB, Firebase
Наши услуги по разработке приложений на Objective-C включают в себя:
- Разработка приложений с использованием Objective-C под заказ
- Разработка Objective-C приложений для MAC, iPhone и iPad
- Разработка мобильных приложений для носимых устройств, iBeacons
- QA и тестирование приложений для устройств Apple
- Разработка CRM, ERP и POS
- Корпоративные решения
- Профессиональные выделенные команды Objective-C разработчиков
- Интеграция, портирование и миграция приложений
Мeтодологии разработки
Успех проекта разработки программного обеспечения во многом зависит от правильного выбора методологии разработки и управления проектами. В зависимости от специфики проекта, мы используем гибкие методологии и практики разработки программного обеспечения, основывающиеся на Agile, DevOps, и CI
DevOps
Development and Operations
RUP
Rational Unified Process
CI
Continuous integration practices
TDD
Test Driven Development
другие методологии разработки
Выделенные команды Objective-C разработчиков приложений под iOS/OS X на заказ
Квалифицированные выделенные команды разработчиков компании PNN Soft имеют большой опыт в разработке приложений на Objective-C. Мы предоставляем качественные услуги по созданию решений под iOS (Cocoa Touch) и OS X (Cocoa), используя современные и надежные технологии. PNN Soft гарантирует всем клиентам стабильность и отсутствие багов в приложениях, разработанных на Objective-C. Все заказчики получают готовые и эффективные продукты в срок с последующей их поддержкой.
Чтобы заказать профессиональную разработку под iOS/OS X, свяжитесь с нами.
Наши проекты
Посмотреть содержимое
Task Management System — административный портал для бизнеса
Корпоративные решения
Мобильные приложения
Разработчики PNN Soft создали систему управления задачами и внедрили для нее эффективные решения. Система включает в себя портал и приложение администрирования задач. Доступно для iOS и Android.
Посмотреть содержимое
Цифровая Инфраструктура И Операционная Система
Корпоративные решения
Технологии
Анализ данных и визуализация
PNN Soft создает решение для организации рабочих процессов и коммуникации внутренних сотрудников.
Посмотреть содержимое
Поддержка рынка: комплексное серверное приложение для надежных решений
Обучение и маркетинг
Веб и десктоп приложения
PNN Soft создали надежное мобильное решение для управления основными данными рынков.
Посмотреть содержимое
Веб-аналитическое приложение для привлечения потребителей и анализа их поведения
Обучение и маркетинг
Веб и десктоп приложения
Надежное веб-аналитическое приложение с эффективными функциями для управления потребителями и их анализа.
Посмотреть содержимое
Эффективное приложение для сбора данных с Bluetooth подключением
Технологии
Мобильные приложения
Mobile
Приложение для сбора данных iOS и Android с помощью Bluetooth Low Energy. Подходит для приложений Интернета вещей малого и среднего размера.
Посмотреть содержимое
Bluefy-Web Bluetooth API решение для iOS устройств
Новое решение для беспроводного подключения через Web API для устройств iOS. Новый продукт от PNN Soft.
Посмотреть содержимое
CMS система, веб и мобильное приложение для крупной международной бьюти-компании
Мобильные приложения
Веб и десктоп приложения
Компания PNN Soft разработала CMS систему для эффективного управления сайтом, а также веб и мобильное приложение под iOS/Android для удобного просмотра и выбора контента пользователями.
Посмотреть содержимое
OBD Car Doctor — более 3 500 000 скачиваний! Входит в ТОП-10 приложений рубрики Транспорт на Google Play!
Авто и транспорт
Mobile
Мобильные приложения
Приложение OBD Car Doctor Андроид — наиболее скачиваемое приложение на Google Play в разделе Транспорт — более 3 500 000 скачиваний! Приложение для OBD-II диагностики, чтобы сделать вас лучшим водителем!
Посмотреть содержимое
OBD Car Doctor iOS — наиболее скачиваемое приложение на AppStore для OBD-II диагностики авто — более 500 тысяч скачиваний!
Mobile
Авто и транспорт
Мобильные приложения
Вместе с OBD Car Doctor iOS вы ощутите преимущество новых возможностей и дополнительных функций наиболее скачиваемого приложения на AppStore. Тысячи пользователей по всему миру, сотни счастливых водителей. Станьте одним из них!
О Objective-C
Далее
Objective-C — это основной язык программирования, который вы используете при написании программного обеспечения для OS X и iOS. Это надмножество языка программирования C, предоставляющее объектно-ориентированные возможности и динамическую среду выполнения. Objective-C наследует синтаксис, примитивные типы и операторы управления потоком C и добавляет синтаксис для определения классов и методов. Он также добавляет поддержку на уровне языка для управления графами объектов и литералов объектов, обеспечивая динамическую типизацию и привязку, откладывая многие обязанности до времени выполнения.
Краткий обзор
Этот документ знакомит с языком Objective-C и предлагает обширные примеры его использования. Вы узнаете, как создавать свои собственные классы, описывающие пользовательские объекты, и увидите, как работать с некоторыми классами фреймворка, предоставляемыми Cocoa и Cocoa Touch. Хотя классы фреймворка отделены от языка, их использование тесно связано с кодированием с помощью Objective-C, и многие функции уровня языка зависят от поведения, предлагаемого этими классами.
Приложение создано из сети объектов
При создании приложений для OS X или iOS вы будете проводить большую часть времени, работая с объектами. Эти объекты являются экземплярами классов Objective-C, некоторые из которых предоставляются вам Cocoa или Cocoa Touch, а некоторые вы напишете сами.
Если вы пишете свой собственный класс, начните с описания класса, в котором подробно описывается предполагаемый общедоступный интерфейс для экземпляров класса. Этот интерфейс включает общедоступные свойства для инкапсуляции соответствующих данных, а также список методов. Объявления методов указывают сообщения, которые может получать объект, и включают информацию о параметрах, требуемых при каждом вызове метода. Вы также предоставите реализацию класса, которая включает исполняемый код для каждого метода, объявленного в интерфейсе.
Соответствующие главы: Определение классов, работа с объектами, инкапсуляция данных
Категории расширяют существующие классы
Вместо создания совершенно нового класса для предоставления незначительных дополнительных возможностей по сравнению с существующим классом можно определить категорию для добавления пользовательских поведение к существующему классу. Вы можете использовать категорию для добавления методов в любой класс, включая классы, для которых у вас нет исходного исходного кода реализации, например классы фреймворка, такие как 9.0023 NSString .
Если у вас есть исходный код класса, вы можете использовать расширение класса для добавления новых свойств или изменения атрибутов существующих свойств. Расширения класса обычно используются, чтобы скрыть частное поведение для использования либо в одном файле исходного кода, либо в частной реализации пользовательской платформы.
Соответствующие главы: Настройка существующих классов
Протоколы Определение контрактов обмена сообщениями
Большая часть работы в приложении Objective-C выполняется в результате того, что объекты отправляют сообщения друг другу. Часто эти сообщения определяются методами, явно объявленными в интерфейсе класса. Однако иногда полезно иметь возможность определить набор связанных методов, которые не привязаны напрямую к конкретному классу.
Objective-C использует протоколы для определения группы связанных методов, таких как методы, которые объект может вызывать для своего делегата, которые являются необязательными или обязательными. Любой класс может указать, что он принимает протокол, а это означает, что он также должен предоставлять реализации для всех необходимых методов в протоколе.
Соответствующие главы: Работа с протоколами
Значения и коллекции часто представляются как объекты Objective-C
В Objective-C принято использовать классы Cocoa или Cocoa Touch для представления значений. 9Класс 0023 NSString используется для строк символов, класс NSNumber
для различных типов чисел, таких как целые числа или числа с плавающей запятой, и класс NSValue
для других значений, таких как структуры C. Вы также можете использовать любой из примитивных типов, определенных языком C, например, int
, float
или char
.
Коллекции обычно представлены как экземпляры одного из классов коллекций, например NSArray
, NSSet
или NSDictionary
, каждый из которых используется для сбора других объектов Objective-C.
Соответствующие главы: Значения и коллекции
Блоки упрощают общие задачи
Блоки — это языковая функция, введенная в C, Objective-C и C++ для представления единицы работы; они инкапсулируют блок кода вместе с захваченным состоянием, что делает их похожими на замыкания в других языках программирования. Блоки часто используются для упрощения общих задач, таких как перечисление коллекций, сортировка и тестирование. Они также упрощают планирование задач для одновременного или асинхронного выполнения с использованием таких технологий, как Grand Central Dispatch (GCD).
Соответствующие главы: Работа с блоками
Объекты ошибок используются для решения проблем во время выполнения
Хотя Objective-C включает синтаксис для обработки исключений, Cocoa и Cocoa Touch используют исключения только для ошибок программирования (таких как выход за границы массива) , что должно быть исправлено перед отправкой приложения.
Все остальные ошибки, включая проблемы во время выполнения, такие как нехватка места на диске или невозможность доступа к веб-службе, представлены экземплярами класса 9.0023 Класс NSError . Ваше приложение должно планировать ошибки и решать, как лучше с ними справляться, чтобы предоставить наилучший пользовательский опыт, когда что-то пойдет не так.
Соответствующие главы: Работа с ошибками
Код Objective-C следует установленным соглашениям
При написании кода Objective-C следует помнить о ряде установленных соглашений кодирования. Имена методов, например, начинаются со строчной буквы и используют верблюжий регистр для нескольких слов; например, doSomething
или doSomethingElse
. Однако важна не только заглавная буква; вы также должны убедиться, что ваш код максимально удобочитаем, а это значит, что имена методов должны быть выразительными, но не слишком многословными.
Кроме того, есть несколько соглашений, которые необходимы, если вы хотите воспользоваться преимуществами языка или фреймворка. Например, методы доступа к свойствам должны следовать строгим соглашениям об именах, чтобы работать с такими технологиями, как кодирование значений ключа (KVC) или наблюдение за значением ключа (KVO).
Соответствующие главы: Соглашения
Предварительные условия
Если вы новичок в разработке для OS X или iOS, вам следует прочитать Начать разработку приложений для iOS сегодня (устарело) или Начать разработку приложений для Mac сегодня , прежде чем читать этот документ , чтобы получить общее представление о процессе разработки приложений для iOS и OS X. Кроме того, вам следует ознакомиться с Xcode, прежде чем пытаться следовать упражнениям в конце большинства глав этого документа. Xcode — это IDE, используемая для создания приложений для iOS и OS X; вы будете использовать его для написания кода, разработки пользовательского интерфейса вашего приложения, тестирования вашего приложения и устранения любых проблем.
Хотя желательно иметь некоторое представление о C или одном из языков на основе C, таких как Java или C#, этот документ содержит встроенные примеры основных функций языка C, таких как операторы управления потоком. Если у вас есть знания о другом языке программирования более высокого уровня, таком как Ruby или Python, вы должны быть в состоянии следить за содержанием.
Общие принципы объектно-ориентированного программирования даются в разумных пределах, особенно в том, что касается их применения в контексте Objective-C, но предполагается, что вы хотя бы минимально знакомы с основными концепциями объектно-ориентированного программирования. Если вы не знакомы с этими концепциями, вам следует прочитать соответствующие главы в главе 9.0107 Концепции программирования на языке Objective-C .
См. также
Содержимое этого документа относится к Xcode 4.4 или более поздней версии и предполагает, что вы ориентируетесь либо на OS X v10.7 или более позднюю, либо на iOS 5 или более позднюю версию. Дополнительные сведения о Xcode см. в разделе Обзор Xcode . Сведения о доступности языковых функций см. в Индексе доступности функций Objective-C .
Приложения Objective-C используют подсчет ссылок для определения времени жизни объектов. По большей части функция автоматического подсчета ссылок (ARC) компилятора позаботится об этом за вас. Если вы не можете воспользоваться преимуществами ARC или вам нужно преобразовать или поддерживать устаревший код, который управляет памятью объекта вручную, вам следует прочитать Расширенное руководство по программированию управления памятью .
В дополнение к компилятору, язык Objective-C использует систему времени выполнения для реализации своих динамических и объектно-ориентированных функций. Хотя обычно вам не нужно беспокоиться о том, как «работает» Objective-C, можно напрямую взаимодействовать с этой системой среды выполнения, как описано в Руководстве по программированию среды выполнения Objective-C и Справочник по среде выполнения Objective-C .
Следующий
Авторские права © Apple Inc., 2014. Все права защищены. Условия использования | Политика конфиденциальности | Обновлено: 2014-09-17
Что такое C, C++, C# и Objective-C и как они используются в технике?
Онлайн-школа кодирования и дизайна с A
Войти
Скотт Моррис
C правит всем вокруг меня.
Подходит ли вам технология? Пройдите наш 3-минутный тест!
Ты выучишь:
Подходит ли вам профессия в сфере технологий
Какая техническая карьера соответствует вашим сильным сторонам
Какие навыки вам нужны для достижения ваших целей
Изучая мир технических терминов, пытаясь разобраться во всем этом отраслевом жаргоне, вы могли натолкнуться на упоминание языка программирования под названием C. Или это был C++? А может быть, это было и то, и другое? Но разве вы не видели где-то пост, в котором упоминался C#? А как насчет той темы на форуме, где кто-то спрашивал об Objective-C? В чем именно разница между C и C++? Или С++ против С#? Это разные версии одного и того же? Или они вообще не родственники?
Ответ заключается в том, что каждое из этих названий — C, C++, C# (# произносится как «резкий») и Objective-C — относятся к определенным языкам программирования. C появился первым, а остальные были либо построены на C, либо вдохновлены им. Чтобы получить более четкое представление о том, что делает каждый из этих языков уникальным, как они соотносятся друг с другом и как они используются в технологической отрасли сегодня, я поговорил с двумя техническими специалистами и получил их профессиональные советы по этому вопросу.
Содержание
- Глава 1. C и объектно-ориентированные языки программирования
- Глава 2: C++, C# и Objective C
- Глава 3. Какие языки семейства C все еще широко используются?
- Глава 4: Как вы можете выучить языки семьи C и для каких видов работ они используются?
C и объектно-ориентированные языки программирования
Чтобы понять качества и различия между C++, C# и Objective-C, вам нужно начать с исходного языка программирования C. По словам Ника Хаббена, старшего креативного технолога в агентстве цифрового маркетинга Genuine Interactive (и мужа технического директора Skillcrush Эмили Дэвис), язык программирования C был разработан в начале 19 века.70-х годов, он был реализован во многих первых мейнфреймах и микрокомпьютерах 1980-х годов и с тех пор превратился в повсеместное кодирование, оказав влияние на многие языки программирования, используемые сегодня. Хаббен описывает C как прародителя объектно-ориентированного программирования — класса языков, включающего C++, C# и Objective-C.
В то время как некоторые типы языков программирования предоставляют компьютерам список задач для выполнения, объектно-ориентированные языки программирования позволяют программистам создавать в своем коде виртуальные объекты — каждый с уникальными атрибутами и способностями — которые затем могут взаимодействовать друг с другом для выполнять действия. Простой способ представить это — представить объектно-ориентированное программирование как виртуальный набор строительных блоков. Каждый блок — это объект, который определяется определенной формой, размером и т. д., а также типами поведения (например, можно ли его укладывать поверх блока другого типа? Можно ли укладывать на него определенные блоки? Где? он сейчас ставится?).
Затем группам объектов можно дать инструкции, например, группа блоков A может быть использована для строительства башни, а группа блоков B может быть указана для создания ступенек, ведущих к вершине башни. Преимущество этой объектной модели заключается в том, что она снижает сложность, имитируя построение реального мира и предоставляя программистам четкую структуру для работы. Объекты можно изолировать и поддерживать отдельно от остального кода (упрощая поиск и исправление ошибок), а после создания их можно легко повторно использовать в будущих программах.
Однако Келли Уилкерсон, соучредитель и ведущий разработчик компании Decipher Tools, занимающейся резервным копированием и управлением данными iOS, говорит, что важно отметить, что C сам по себе не является объектно-ориентированным языком. В C, говорит Вилкерсон, в коде нет категорий классов или объектов. Вместо этого C использует то, что называется структурами, для группировки значений базовых типов вместе. Несмотря на эту разницу, говорит Уилкерсон, общим знаменателем между C и его объектно-ориентированными родственниками C++, C# и Objective-C является то, что последние три — хотя все они объектно-ориентированные — были разработаны с использованием синтаксиса в стиле C (набор правила, определяющие правильное использование языка). Но если остальные три языка семейства C являются объектно-ориентированными языками, основанными на C или вдохновленными им, что отличает их друг от друга?
(наверх)
C++ против C# против Objective C
C++
Выпущенный в 1979 году, Уилкерсон говорит, что C++ был специально создан для добавления объектов и методов экземпляра (поведения объекта) в исходный язык C. Это было основано на идее, что объектно-ориентированное программирование будет более эффективным и действенным для крупных программных проектов — на что Хаббен указывает как на причину широкого распространения C++ в последующие годы. Хаббен говорит, что C++ — это язык, используемый для написания многих современных настольных приложений (включая программы Adobe, такие как Photoshop, веб-браузер Mozilla Firefox и операционная система Microsoft Windows), и — в результате этой большой базы использования — огромное количество фреймворков. и библиотеки (наборы инструментов, используемых для разработки программного обеспечения, веб-сайтов или приложений) были созданы для расширения C++ для таких функций, как высокопроизводительная графика, цифровая обработка аудиосигналов и дизайн пользовательского интерфейса. Между тем, Уилкерсон говорит, что стандартная библиотека C++ настолько велика, что новички могут начать работу над проектами без необходимости самостоятельно писать много общего кода, даже не заходя в сторонние библиотеки.
C#
В то время как C++ был получен непосредственно из исходного языка C, C# — это объектно-ориентированный язык программирования, который был «вдохновлен» C. Впервые появившись в 2000 году, Хаббен говорит, что C# — это язык, используемый для разработки программ внутри Платформа Microsoft . NET (проприетарная платформа Microsoft для разработки программного обеспечения и приложений Windows). Хотя он в основном используется для программного обеспечения, работающего на платформе Windows, Хаббен говорит, что C# не является исключительным для него и хорошо подходит для общих проектов объектно-ориентированного программирования, как малых, так и больших.
Objective-C
Хаббен говорит, что Objective-C был разработан в конце 1980-х с целью создания гибкого объектно-ориентированного языка программирования с упором на повторное использование кода. Создатели Objective-C добавили некоторые концепции из другого языка под названием Smalltalk, полагая, что это улучшит C++ как объектно-ориентированный язык на основе C. Хаббен говорит, что Objective-C был принят компанией под названием NeXT — компьютерной компанией Стива Джобса, которую он основал, прежде чем вернуться в Apple в конце 19-го века.80-х — и в конечном итоге стала основой для OSX и iOS (соответственно настольных и мобильных операционных систем Apple). Однако Хаббен говорит, что в последние годы Apple начала заменять Objective-C языком под названием Swift, поскольку компания отходит от языков в стиле C.
(наверх)
Все ли языки программирования семейства C (C, C++, C# и Objective-C) по-прежнему широко используются?
Уилкерсон говорит, что все четыре языка (C, C++, C# и Objective-C) по-прежнему используются в технической индустрии (хотя она упоминает, как и выше, что Apple поощряет программистов изучать Swift вместо Objective-C). Фактически, Уилкерсон говорит, что все четыре языка могут использоваться в разных целях. Например, Уилкерсон говорит, что вы могли бы написать код C/C++/C# для OSX, если бы действительно захотели. «Обычно в проекте используется смесь этих языков», — говорит Свифт. «Вы можете написать приложение для iPhone на Objective-C, но попутно использовать некоторые библиотеки C и функции C». При этом Уилкерсон описывает некоторые из наиболее типичных случаев одноразового использования C, C++. и С# следующим образом:
C используется для разработки систем (таких как операционные системы или микропрограммы — постоянное программное обеспечение, хранящееся в памяти компьютера), и он настолько широко поддерживается, что также является хорошим выбором для написания библиотек, используемых несколькими языками программирования, или программ, которым требуется для работы в нескольких операционных системах. Например, я написал программное обеспечение, представляющее собой смесь кода Java и C для кроссплатформенных проектов.
C++ — отличный выбор для больших, чувствительных к производительности проектов, которые выиграют от объектно-ориентированного дизайна (такие вещи, как высококачественные видеоигры и графическое программирование).
И, наконец, программирование на C# является популярным выбором для разработки программного обеспечения для Windows, серверных веб-служб и приложений с большим объемом баз данных.
Хаббен говорит, что ежедневно использует C++ и C# в своей работе. По словам Хаббена, C++ является основой популярной среды творческого кодирования под названием openFrameworks, которая позволяет быстро создавать прототипы графики, а также поддерживает и расширяет управляемое компьютером оборудование, камеры, микроконтроллеры, освещение и многое другое. «Я использую openFrameworks для создания забавных анимаций и интерактивного программного обеспечения для маркетинговых приложений и выставок». — говорит Хаббен. Помимо openFrameworks на базе C++, Hubben также использует платформу разработки игр Unity3D с C# для проектов, требующих 3D-рендеринга и профессиональной графики.
(наверх)
Как вы можете изучать языки программирования C-Family и для какой работы они требуются?
Уилкерсон познакомилась с C и C++ в колледже, но, поскольку ее занятия не были сосредоточены на C++, она не закончила школу со знанием этого языка. Позже в своей карьере она закончила преподавать модуль C ++ в рамках курса «Введение в языки программирования» в штате Аризона, что заставило ее самостоятельно освоиться с языком. Между тем, она изучила C#, когда проходила стажировку в Microsoft во время учебы в аспирантуре, и самостоятельно изучила Objective-C после того, как начала разрабатывать приложения для iPhone в 2008 году.0003
Хаббен самоучка в C++ и C#. Будучи разработчиком ActionScript/Flash, он был заинтересован в изучении C++, желая создавать высокопроизводительные анимации и отойти от веб-разработки. «Я учился методом проб и ошибок и изучал примеры из openFrameworks и Cinder (еще одна популярная среда творческого кодирования для C++)», — говорит Хаббен. «Сообщество openFrameworks, в частности, чрезвычайно щедро отдает свое время и знания». Благодаря большому количеству бесплатных учебных пособий, доступных в Интернете из таких источников, как Learn-C, Udemy, SoloLearn и Code School (в дополнение к таким сообществам, как openFrameworks), есть ресурсы, чтобы начать свой собственный процесс ознакомления с языками семейства C.
Когда дело доходит до C-Family и практического заявления о приеме на работу, Уилкерсон дает следующий совет:
Я бы сгруппировал C и C++ вместе, сказав, что они огромны, если вы хотите заняться разработкой игр, операционных систем (особенно Unix или Linux), или прошивка. Вы также иногда будете сталкиваться с заданиями, связанными с поддержкой или переходом на старые системы, написанные на C или C++. И даже если вы не выполняете интенсивную работу на C или C++, немного C или C++ (и я подчеркиваю, немного — как умение читать) сослужит вам хорошую службу в любой работе, поскольку вы, вероятно, столкнетесь с кодом или библиотекой C или C++ независимо от того, над каким проектом вы работаете.
Опыт работы с C# сослужит вам хорошую службу, если вы хотите работать над программным обеспечением Windows или веб-разработкой (обычно бэкэнд). Также, как правило, есть возможности трудоустройства на C# в сфере бизнеса и внутреннего программного обеспечения компании.
И если вы хотите работать в Apple (или хотите создавать программное обеспечение для iOS или macOS), вам определенно нужно изучать Objective-C. Опять же, Apple переходит на программирование на Swift, но чтобы ориентироваться в текущем мире существующего кода и сторонних библиотек, вы должны иметь возможность хотя бы читать код Objective-C.
(наверх)
Подходит ли вам технология? Пройдите наш 3-минутный тест!
Ты выучишь:
Подходит ли вам профессия в сфере технологий
Какая техническая карьера соответствует вашим сильным сторонам
Какие навыки вам нужны для достижения ваших целей
Скотт Моррис
Скотт Моррис — штатный писатель Skillcrush и продюсер контента. Как и все члены команды Skillcrush, он работает удаленно (в его случае из Напы, Калифорния). Он считает, что контент, который стоит прочитать (и который ваша аудитория может найти!) создает бренды, за которыми следят люди. У него есть опыт написания статей на такие темы, как работа и технологии, цифровой маркетинг, карьерные повороты, гендерное равенство, воспитание детей и популярная культура. Прежде чем начать свою карьеру в качестве писателя и контент-маркетолога, он провел 10 лет в качестве полноценного родителя своих дочерей Вероники и Афины.
(Вернуться к началу.)
Похожие сообщения
iOS — Objective-C — Advanced
См. наше краткое руководство.
Мы рекомендуем отслеживать только пять-семь событий в вашем приложении вместо того, чтобы отслеживать слишком много вещей, чтобы начать. В идеале вы отслеживаете пользователей, проходящих через ваш первоначальный пользовательский опыт, и одну ключевую метрику, которая имеет значение для вашего приложения (например, служба потокового видео может выбрать «Просмотренное видео» в качестве ключевой метрики).
После инициализации библиотеки вы можете отслеживать событие, вызывая track:properties: с именем события и свойствами.
Mixpanel *mixpanel = [Общий экземпляр Mixpanel]; [дорожка Mixpanel: @"План выбран" свойства: @{ @"План": @"Премиум" }];
Вы можете отслеживать время, которое потребовалось для выполнения действия, такого как загрузка изображения или публикация комментария, с помощью timeEvent:. Это отметит «начало» вашего действия, которое вы затем можете завершить вызовом трека. Затем продолжительность времени записывается в свойстве «Длительность». {
[дорожка Mixpanel: @»Загрузка изображения»];
}];
Очень часто бывают определенные свойства, которые вы хотите включить в каждое отправляемое вами событие. Как правило, это то, что вы знаете о пользователе, а не о конкретном событии, например, его возраст, пол или источник.
Чтобы упростить задачу, вы можете зарегистрировать эти свойства как супер свойства. Если вы это сделаете, мы автоматически включим их во все отслеживаемые события. Супер свойства сохраняются в хранилище устройства и будут сохраняться при вызовах вашего приложения. Mixpanel по умолчанию уже хранит некоторую информацию в виде супер-свойств; см. полный список свойств Mixpanel по умолчанию здесь.
Чтобы установить супер свойства, вызовите registerSuperProperties:
// Отправить свойство «План: Мега» будет отправлено // со всеми будущими вызовами треков. [mixpanel registerSuperProperties:@{@"Plan": @"Mega"}];
В дальнейшем при каждом отслеживании события суперсвойства будут включаться в качестве свойств. Например, если вы позвоните:
[mixpanel track:@"Signup" properties:@{ @"Источник": @"Твиттер" }];
после выполнения вышеуказанного вызова registerSuperProperties: это похоже на непосредственное добавление свойств:
[дорожка Mixpanel: @Свойства "Регистрация": @{ @"Источник": @"Твиттер", @"План": @"Мега" }];
Если вы хотите сохранить суперсвойство только один раз (часто для таких вещей, как рекламная кампания или источник), вы можете использовать registerSuperPropertiesOnce:. Эта функция ведет себя как registerSuperProperties: и имеет тот же интерфейс, но она не переопределяет уже сохраненные суперсвойства.
[mixpanel registerSuperPropertiesOnce: @{@"Source": @"ad-01"}];
Это означает, что безопасно вызывать registerSuperPropertiesOnce: с одним и тем же свойством при каждой загрузке приложения, и оно будет устанавливаться только в том случае, если суперсвойство не существует.
Наши мобильные библиотеки хранят ваши супер свойства в локальном хранилище. Они будут сохраняться до тех пор, пока приложение установлено (между запусками и обновлениями). Удаление приложения удалит эти супер свойства клиентов.
Идентификацию пользователя можно обрабатывать с помощью методов идентификации и псевдонима. Правильное использование этих методов может связать события с нужным пользователем, когда они перемещаются между устройствами, браузерами и другими платформами.
Определите пользователя с помощью уникального идентификатора, чтобы отслеживать действия пользователя на разных устройствах, связывать пользователя с его событиями и создавать профиль пользователя. Если вы никогда не вызываете этот метод, уникальные посетители отслеживаются с помощью UUID, который генерируется при первом использовании приложения.
Argument | Type | Description |
---|---|---|
distinctId | String | A string that uniquely identifies a user — we recommend a ID пользователя. Если он не указан, используется текущий идентификатор localStorage. |
Позвоните по номеру , идентифицируйте
, если вы знаете личность текущего пользователя, обычно после входа в систему или регистрации. Мы не рекомендуем использовать идентифицируйте
для анонимных посетителей вашего сайта.
// Убедитесь, что все будущие события отправляются из // устройство будет иметь отличительный идентификатор 13793 [идентификация Mixpanel:@"13793"];
📘
Объединение идентификаторов
Если в проекте включено объединение идентификаторов, метод идентификации будет соединять события до и после аутентификации, когда это необходимо.
Если в проекте не включено слияние идентификаторов, функция идентификации изменит локальный уникальный идентификатор пользователя на переданный вами уникальный идентификатор. События, отслеживаемые до аутентификации, не будут связаны с одним и тем же идентификатором пользователя. Если слияние идентификаторов отключено, псевдоним можно использовать для соединения событий до и после регистрации.
Метод псевдонима создает псевдоним, который Mixpanel будет использовать для переназначения одного идентификатора другому. Несколько псевдонимов могут указывать на один и тот же идентификатор.
📘
Объединение идентификаторов
Если в проекте включено объединение идентификаторов, просто вызовите функцию идентификации с выбранным вами идентификатором, как только вы узнаете, кто является пользователем, чтобы объединить анонимные и идентифицированные отдельные идентификаторы. Вызов псевдонима больше не требуется.
Аргумент | Тип | ОПИСАНИЕ | |
---|---|---|---|
ПРОЕКТ | Строка | A Уникальный идентификатор, который вы захотите, чтобы использовать это, чтобы использовать это | . |
DifferentId | Строка | Текущий идентификатор пользователя. |
Ниже приведено допустимое использование псевдоним
:
[mixpanel createAlias: @"New ID" forDistinctID:mixpanel.distinctId]; [mixpanel createAlias:@"Новый идентификатор" forDistinctID:mixpanel.distinctId];
Псевдонимы также могут быть объединены в цепочку. Вот пример:
[mixpanel createAlias:@"new_id" forDistinctID:@"existing_id"]; // Вы можете связать псевдонимы [mixpanel createAlias:@"newer_id" forDistinctID:@"new_id"];
Псевдонимы не могут указывать на несколько идентификаторов — следующий пример не будет работать:
[mixpanel createAlias:@"new_id" forDistinctID:@"existing_id"]; //это неверно, поскольку 'new_id' уже указывает на 'existing_id' [mixpanel createAlias:@"new_id" forDistinctID:@"newer_id"];
❗️
Объединение идентификаторов
Если в проекте не включено объединение идентификаторов, рекомендуется вызывать
псевдоним
один раз, когда для пользователя впервые создается уникальный идентификатор (например, когда пользователь впервые регистрируется в учетная запись). Не используйте псевдонимнесколько раз для одного пользователя без включенного слияния идентификаторов.
🚧
Сброс может заполнить кластер идентификации при частом использовании
Сброс следует использовать только в том случае, если несколько пользователей совместно используют устройство.
Частые сбросы могут привести к тому, что пользователи быстро превысят ограничение в 500 уникальных идентификаторов на кластер идентификации. Как только будет достигнуто ограничение в 500, вы больше не сможете добавлять дополнительные отличные идентификаторы в кластер идентификации пользователей.
Сброс создает новый случайный отличительный_ид и очищает суперсвойства. Вызовите сброс, чтобы очистить данные, относящиеся к пользователю, когда этот пользователь выходит из системы. Это позволяет управлять несколькими пользователями на одном устройстве. Дополнительную информацию о сохранении удостоверений пользователей см. в статье Управление идентификацией: рекомендации .
Начиная с версии v3.6.2, Mixpanel больше не использует IFA (идентификатор для рекламодателей), а вместо этого использует случайно сгенерированный UUID в качестве отдельного идентификатора по умолчанию. После того, как вы вызовете reset, Mixpanel создаст новый Different_id.
Если вы хотите использовать IFV(identifierForVendor) в качестве отличительного_идентификатора, вы можете установить
MIXPANEL_UNIQUE_DISTINCT_ID=1
в настройках сборки Макросы препроцессора
в целевой платформе Mixpanel. После того, как вы вызовете сброс, БМП не изменится. Однако, когда пользователь удаляет, а затем повторно устанавливает приложение, IFV будет меняться при каждой установке.
Помимо событий, в Mixpanel можно хранить профили пользователей. Профили — это постоянные наборы свойств, описывающих пользователя, таких как имя, адрес электронной почты и дата регистрации.
Вы можете использовать профили для изучения и сегментации пользователей по тому, кто они есть, а не по тому, что они делали. Вы также можете использовать профили для отправки сообщений, таких как электронная почта, SMS или push-уведомления.
📘
ПРИМЕЧАНИЕ
Прежде чем отправлять обновления профиля, необходимо позвонить по телефону: Это гарантирует, что в системе будут сохранены только действительные зарегистрированные пользователи.
Вы можете установить свойства профиля пользователя с помощью people.set:.
Обновления профилей пользователей ставятся в очередь на устройстве до тех пор, пока не будет вызвана функция идентификации.
// Устанавливает для атрибута "План" пользователя 13793 значение "Премиум" [mixpanel.people set:@{@"План": @"Премиум"}];
Это установит свойство «План» со значением «Премиум» в профиле пользователя 13793. Если в Mixpanel еще нет профиля с Different_id 13793, будет создан новый профиль. Если у пользователя 13793 в профиле уже есть свойство с названием «План», старое значение будет заменено на «Премиум».
📘
ПРИМЕЧАНИЕ
Подбирайте имена своих свойств с умом. Не стесняйтесь использовать заглавные буквы и пробелы между словами.
Есть несколько ограничений:
- Имена ваших свойств не должны начинаться с
$
илиmp_
. Эти свойства зарезервированы для специальных свойств, отправляемых Mixpanel.- Имена ваших свойств не могут начинаться или заканчиваться пробелом, так как они будут автоматически обрезаны.
- Имена и значения свойств не могут быть длиннее 255 символов. На практике они должны быть намного короче. Имена свойств обрезаются нашим пользовательским интерфейсом примерно на 20 символах.
Щелкните здесь, чтобы просмотреть список зарезервированных свойств профиля пользователя Mixpanel.
Вы можете использовать приращение людей: для изменения текущего значения числовых свойств. Это полезно, когда вы хотите вести текущий подсчет таких вещей, как сыгранные игры, отправленные сообщения или заработанные очки.
// Здесь мы увеличиваем количество очков пользователя на 500. [mixpanel.people увеличивает:@"количество баллов" на:@500]; // Передаем NSDictionary для увеличения нескольких свойств [приращение mixpanel.people: @{ @"потрачено долларов": @17, @"осталось кредитов": @-34 }];
Есть несколько других типов обновлений профиля. Чтобы узнать больше, ознакомьтесь с полной документацией по API MixpanelPeople.
Mixpanel позволяет легко анализировать доход, который вы получаете от отдельных клиентов. Связывая платежи с профилями пользователей, вы можете сравнивать доходы разных сегментов клиентов и рассчитывать такие показатели, как пожизненная ценность.
Вы можете отслеживать одну транзакцию с людьми trackCharge:. Этот вызов добавит транзакции в профиль отдельного пользователя, что также будет отражено в отчете о доходах Mixpanel.
// Отслеживает доход в размере $100,77 для пользователя 13793 [mixpanel.people trackCharge:@(100.77)]; // Возврат этому пользователю $50 [mixpanel.people trackCharge:@-50]; // Отслеживает доход в размере 25 долларов США для пользователя 13793 2 числа // январь [mixpanel.people trackCharge:@25 withProperties:@{ @"$time": "2016-01-02T00:00:00" }];
📘
Добавить групповые ключи
Чтобы начать отслеживать данные групп, добавьте групповые ключи в настройках проекта. Если вы не видите групповые ключи в настройках проекта, обратитесь в отдел продаж Mixpanel, чтобы приобрести групповую аналитику.
Mixpanel Group Analytics позволяет анализировать данные о поведении выбранных групп, а не отдельных пользователей.
Группировка по идентификаторам, отличным от different_id
, позволит проводить анализ на уровне компании или группы при использовании аналитики Mixpanel. Прочтите эту статью, чтобы узнать больше о групповой аналитике.
Группа идентифицируется group_key
и group_id
.
-
group_key
— это свойство, которое связывает данные о событиях для групповой аналитики. -
group_id
— это идентификатор конкретной группы.
Если свойство «company» выбрано для Group Analytics, «company» — это group_key
, а «Mixpanel», «Company A» и «13254» — все возможные значения group_id
.
Пользователь может принадлежать к нескольким группам. Все обновления группы работают с group_key
и group_id
.
Администрирование групповых ключей через настройки проекта. Групповые ключи — это свойства события. Все события должны иметь определенный групповой ключ, чтобы их можно было отнести к группе. Групповые ключи зависят от проекта, и групповой ключ должен быть настроен до отправки групповых данных. Обратите внимание, что Mixpanel не заполняет исторические данные до того, как был реализован групповой ключ.
Для управления групповыми ключами перейдите в настройки проекта. Щелкните +Добавить групповой ключ в разделе ГРУППОВЫЕ КЛЮЧИ .
Введите свойство события, которому следует присвоить групповой ключ. Вы также можете ввести отображаемое имя для группового ключа. Нажмите Сохранить .
Можно создать профиль группы, аналогичный профилю пользователя. Вы должны вызвать getGroup().set() для создания группового профиля. Важно group_key
, group_id
и одно свойство, чтобы профиль не был пустым.
[[self.mixpanel getGroup:@"Company", groupID:@"Mixpanel"] set:@{@"h": @"yo"}];
Вы можете добавлять сведения в группы, добавляя к ним свойства.
Чтобы обновить свойства профиля группы, необходимо указать группу, которую необходимо обновить, вызвав getGroup():groupID().
Метод getGroup():groupID() может быть связан с другими командами, редактирующими свойства, относящиеся к группе.
Можно установить свойство $name
для заполнения поля имени в верхней части профиля группы.
Эти операции аналогичны соответствующим операциям для обновления свойств профиля пользователя.
mixpanel.getGroup().set() обновляет или добавляет свойство в группу.
[[self.mixpanel getGroup:@"Company", groupID:@"Mixpanel"] set:@{@"h": @"yo"}];
mixpanel.getGroup().setOnce() добавляет значение свойства в группу, только если оно не было установлено ранее.
[[self.mixpanel getGroup:@"Компания", groupID:@"Mixpanel"] setOnce:@{@"h": @"только один раз"}];
mixpanel.getGroup().unset() отменяет установку определенного свойства в группе.
[[self.mixpanel getGroup:@"Company", groupID:@"Mixpanel"] unset:@"c"];
mixpanel.getGroup().remove() удаляет определенное значение в свойстве списка.
[[self.mixpanel getGroup:@"Company", groupID:@"Mixpanel"] remove:@"c" value:@5];
mixpanel.getGroup().union() добавляет указанные значения в свойство списка и гарантирует, что эти значения появляются только один раз.
[[self.mixpanel getGroup:@"Company", groupID:@"Mixpanel"] union:@"c" values:@[ @5, @4 ]];
mixpanel.getGroup().deleteGroup() удаляет группу.
[[self.mixpanel getGroup:@"Company", groupID:@"Mixpanel"] удалить];
Отслеживание отдельных пользовательских данных на стороне клиента может быть остановлено или возобновлено путем управления состоянием отказа/подтверждения пользователя. Методы отказа и параметры конфигурации библиотеки влияют только на данные, отправляемые из одного экземпляра библиотеки. Данные, отправленные из других источников в API Mixpanel, по-прежнему будут приниматься независимо от того, отключен ли пользователь локально.
Состояние отказа/подтверждения пользователя контролируется флагом отказа, который хранится в локальном хранилище устройства пользователя. Если значение флага истинно, то пользователь отключается и не будет отслеживаться. Если флаг отказа ложный, пользователь отслеживается. Флаг не устанавливается при инициализации SDK, поэтому начальное состояние не является ни включенным, ни отключенным. Без установленного флага пользователь будет отслеживаться по умолчанию.
Чтобы отключить локальное отслеживание пользователя, используйте метод optOutTracking. Чтобы возобновить отслеживание отдельного пользователя, используйте optInTracking. Вызовите hasOptedOutTracking, чтобы локально проверить статус отказа пользователя. По умолчанию событие «$opt_in» отправляется каждый раз, когда пользователь соглашается.
// Отказ пользователя от сбора данных Mixpanel *mixpanel = [Общий экземпляр Mixpanel]; [mixpanel optOutTracking]; // Проверяем статус отказа пользователя // Возвращает true, если пользователь отказался от локального отслеживания BOOL hasOptedOutTracking = [mixpanel hasOptedOutTracking];
Библиотеки отслеживания Mixpanel будут отправлять пользовательские данные по умолчанию. Явная инициализация состояния отказа по умолчанию YES приведет к отключению всех пользователей по умолчанию, что предотвратит отправку данных, если для состояния отказа пользователя не установлено значение NO.
// Инициализация состояния отказа по умолчанию YES // предотвратит сбор данных по умолчанию Mixpanel *mixpanel = [Mixpanel sharedInstanceWithToken:@"ВАШ_API_TOKEN" optOutTrackingByDefault:YES];
Отказ пользователей от отслеживания остановит любое отслеживание в будущем. Это не приводит к автоматическому удалению уже собранных данных. API удаления Mixpanel можно использовать для удаления существующих данных.
После установки библиотеки в ваше iOS-приложение Mixpanel будет автоматически собирать общие мобильные события. Вы можете включить/отключить автоматический сбор в меню настроек Mixpanel. Кроме того, Mixpanel позволяет вам использовать наш редактор в браузере, чтобы добавлять отслеживание на лету.
Перейдите к нашему редактору, щелкнув шестеренку в правом верхнем углу вашего проекта Mixpanel и выбрав Отслеживание без кода из раскрывающегося списка.
Вы можете включить ведение журнала Mixpanel, установив флаг enableLogging
[Mixpanel sharedInstance].enableLogging = YES;
В качестве альтернативы вы можете добавить следующие макросы препроцессора в настройки сборки:
-
MIXPANEL_DEBUG=1
— регистрирует постановку в очередь и сброс событий в Mixpanel -
MIXPANEL_ERROR=1
— регистрирует любые ошибки, связанные с подключениями или некорректными событиями
Если вы используете CocoaPods, вам нужно добавить это в цель Pod вместо цели вашего основного проекта приложения:
Вы также можете добавить это в свой Podfile, чтобы гарантировать, что у всех в вашей команде всегда будет включено ведение журнала:
post_install сделать |установщик| installer.pods_project.targets.each сделать |цель| target. build_configurations.each сделать |config| настройки = config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] settings = ['$(унаследовано)'] если settings.nil? если target.name == 'Pods-MyProject-Mixpanel' настройки << 'MIXPANEL_DEBUG=1' настройки << 'MIXPANEL_ERROR=1' конец config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] = настройки конец конец конец
Начиная с версии 2.2.0 библиотека Mixpanel для iOS использует ARC.
Если вы используете Mixpanel в проекте, в котором не включен ARC, вам необходимо включить ARC только для исходных файлов Mixpanel в настройках вашего проекта Xcode. Это делается путем добавления флага компилятора -fobj-arc
в каждый файл Mixpanel в разделе Build Phases -> Compile Sources
.
Направить данные на серверы Mixpanel в ЕС, установив свойство serverURL
после инициализации клиента.
self.mixpanel = [Mixpanel sharedInstanceWithToken:@"MIXPANEL_TOKEN" launchOptions:launchOptions]; self.mixpanel.serverURL = @"https://api-eu.mixpanel.com";
См. все выпуски.
Обновлено 2 месяца назад
Помогла ли вам эта страница?
Objective-C против Swift: Учебное пособие для разработчиков iOS
В 2008 году Apple анонсировала и выпустила iPhone SDK 2.0. Это событие положило начало еще одной революции в разработке программного обеспечения и рождению нового поколения разработчиков. Теперь они признаны разработчиками iOS.
Многие из этих разработчиков никогда раньше не использовали Objective-C, и это был первый вызов, брошенный им Apple. Несмотря на незнакомый синтаксис и ручное управление памятью, он оказался чрезвычайно успешным, помог заполнить App Store десятками тысяч приложений. Apple постоянно совершенствовала Objective-C с каждым выпуском, добавляя блоки и литералы, упрощая управление памятью с автоматическим подсчетом ссылок и многие другие функции, характерные для современного языка программирования.
И после 6 лет совершенствования и работы над Objective-C, Apple решила бросить еще один вызов разработчикам. И снова разработчикам iOS нужно будет изучить новый язык программирования: Swift . Swift удаляет небезопасное управление указателями и вводит новые мощные функции, сохраняя при этом взаимодействие как с Objective-C, так и с C.
Swift 1.0 уже является стабильной и надежной платформой для разработки, которая, несомненно, будет развиваться интересными путями в ближайшие годы. Это идеальный момент, чтобы начать изучать этот новый язык, поскольку очевидно, что это будущее разработки для iOS.
Цель этого руководства — предоставить разработчикам Objective-C краткий обзор новых функций языка Swift, чтобы помочь вам сделать следующий шаг и начать внедрять Swift в своей повседневной работе. Я не буду тратить слишком много времени на объяснение Objective-C и предполагаю, что вы знакомы с разработкой для iOS.
Сравнение Swift и Objective-C
Чтобы начать изучение Swift, все, что вам нужно сделать, это загрузить XCode из App Store и создать площадку для экспериментов. Все примеры, упомянутые в этой статье, сделаны таким образом.
Домашняя страница Apple Swift — лучший справочник для изучения программирования Swift. Вы обнаружите, что это бесценно, и пока вы полностью не освоите разработку Swift, я верю, что вы будете возвращаться сюда часто.
Переменные и константы
Объявление переменной в Swift выполняется с использованием ключевого слова var
.
переменная х = 1 вар с = "Привет"
Вы заметите, что две переменные x
и s
относятся к разным типам. x
— целое число, а s
— строка. Swift — это типобезопасный язык, и он выводит типы переменных из присвоенного значения. Если вы хотите сделать свой код более читабельным, вы можете опционально аннотировать тип переменной:
var y: Int у = 2
Константы похожи, но вы объявляете их с помощью let
вместо var
. Значение константы не обязательно должно быть известно во время компиляции, но вы должны присвоить ей значение ровно один раз.
let c1 = 1 // Константа известна во время компиляции переменная v = arc4random() let c2 = v // Константа известна только во время выполнения
Как следует из их названия, они неизменяемы, поэтому следующий код вызовет ошибку времени компиляции.
пусть с = 1 с = 3 // ошибка
Другие типы также могут быть объявлены как константы. Например, следующий код объявляет массив как константу, и если вы попытаетесь изменить любой из элементов, компилятор Swift сообщит об ошибке:
переменная обр2 = [4, 5, 6] обр2[0] = 8 печать (обр2) // [8, 5, 6] пусть обр = [1, 2, 3] а[0] = 5 // ошибка
Опции
Константы должны быть инициализированы при их объявлении, а переменные должны быть инициализированы перед использованием. Так где же эквивалент Objective-C nil
? Swift вводит необязательных значений . Необязательные значения могут иметь значение или быть nil
. Если вы посмотрите на следующий код, вы заметите, что x
был назначен Дополнительное
значение 2014
. Это означает, что компилятор Swift знал, что x
также может быть nil
.
переменная с = "2014" переменная х = s.toInt() print(x) // Опционально(2014)
Если вы внесете изменения в этот код и присвоите значение "abc"
s
, которое не может быть преобразовано в целое число, вы заметите, что x
теперь равно nil
.
переменная с = "abc" переменная х = s.toInt() print(x) // ноль
Тип возвращаемого значения функции toInt()
: Int?
, который является необязательным Int . Попробуем вызвать стандартную функцию на x
:
var x = "2014".toInt() print(x.successor()) // ошибка
Компилятор сообщает об ошибке, поскольку x
является необязательным параметром и потенциально может равняться нулю . Сначала мы должны протестировать x
и убедиться, что функция преемника
вызывается для реального числа, а не для 9. 0023 ноль значение:
var x = "2014".toInt() если х != ноль { print(x!.преемник()) // 2015 }
Обратите внимание, что мы должны развернуть x
, добавив восклицательный знак (!) . Когда мы уверены, что x
содержит значение, мы можем получить к нему доступ. В противном случае мы получим ошибку времени выполнения. Мы также можем сделать то, что Swift называет необязательной привязкой , преобразовав необязательную переменную в необязательную переменную
let x = "123".toInt() если пусть у = х { печать (у) }
Код в операторе if
будет выполняться только в том случае, если x
имеет значение, и присвоить его y
. Обратите внимание, что нам не нужно разворачивать y
, этот тип необязателен, так как мы знаем, что x
не nil
.
Ознакомьтесь с учебным пособием Apple Swift, чтобы узнать больше о дополнительных параметрах и полезных функциях, таких как дополнительное объединение в цепочки. Метод 0024:
NSString *user = @"Gabriel"; целые дни = 3; NSString *s = [NSString stringWithFormat:@"опубликовано %@ (%d дней назад)", пользователь, дней];
В Swift есть функция под названием интерполяция строк , которая делает то же самое, но более компактна и удобна для чтения:
let user = "Gabriel" пусть дней = 3 let s = "отправлено \(пользователем) \(дней) назад"
Вы также можете использовать выражения:
пусть ширина = 2 пусть высота = 3 let s = "Площадь квадрата со сторонами \(ширина) и \(высота) равна \(ширина*высота)"
Чтобы узнать больше об интерполяции строк Swift и других новых функциях, перейдите сюда.
Функции
Определение функции в Swift отличается от C. Пример определения функции приведен ниже:
func someFunction(s:String, i: Int) -> Bool { ... // код }
Функции Swift являются первоклассными типами . Это означает, что вы можете назначать функции переменным, передавать их в качестве параметров другим функциям или задавать для них типы возвращаемых значений:
func stringLength(s:String) -> Int { вернуть количество элементов(ов) } func stringValue(s:String) -> Int { если пусть x = s. toInt() { вернуть х } вернуть 0 } func doSomething(f:String -> Int, s:String) -> Int { вернуть f(s).successor() } пусть f1 = длина строки пусть f2 = строковое значение сделать что-то(f1, "123") // 4 сделать что-то(f2, "123") // 124
Опять же, Swift выводит типы f1
и f2
( String
-> Int
), хотя мы могли бы определить их явно:
let f1:String -> Int = stringLength
Функции также могут возвращать другие функции:
func compareGreaterThan(a: Int, b: Int) -> Bool { вернуть а > б } func compareLessThan(a: Int, b: Int) -> Bool { вернуть а < б } func comparator(greaterThan:Bool) -> (Int, Int) -> Bool { если больше чем { вернуть сравнениеGreaterThan } еще { возврат сравненияLessThan } } пусть f = компаратор (истина) println(f(5, 9))
Руководство по функциям в Swift можно найти здесь.
Перечисления
Перечисления в Swift намного мощнее, чем в Objective-C. Как и структуры Swift, они могут иметь методы и передаются по значению:
enum MobileDevice : String { корпус iPhone = "iPhone", Android = "Android", WP8 = "Windows Phone8", BB = "BlackBerry" имя функции () -> строка { вернуть self.toRaw() } } пусть m = MobileDevice.Android print(m.name()) // "Android"
В отличие от Objective-C, перечисления Swift могут назначать строки, символы или числа с плавающей запятой в качестве значений для каждого члена, помимо целых чисел. Удобный метод toRaw()
возвращает значение, присвоенное каждому члену.
Перечисления также могут быть параметризованы:
enum Location { Дело Адрес(улица:Строка, город:Строка) case LatLon(lat:Float, lon:Float) Описание функции () -> Строка { переключить себя { случай пусть .Адрес(улица, город): обратная улица + ", " + город case let .LatLon(lat, lon): вернуть "(\(широта), \(долгота))" } } } let loc1 = Location. Address(улица: "2070 Fell St", город: "Сан-Франциско") пусть loc2 = Location.LatLon (широта: 23,117, долгота: 45,899) print(loc1.description()) // "2070 Фелл-стрит, Сан-Франциско" print(loc2.description()) // "(23.117, 45.988)"
Более подробная информация о перечислениях доступна здесь.
Кортежи
Кортежи группируют несколько значений в одно составное значение. Значения в кортеже могут быть любого типа и не обязательно должны быть одного типа друг с другом.
let person = ("Габриэль", "Киркпатрик") print(person.0) // Габриэль
Вы также можете назвать отдельные элементы кортежа:
let person = (первый: "Габриэль", последний: "Киркпатрик") печать (человек. первый)
Кортежи чрезвычайно удобны в качестве возвращаемых типов для функций, которым необходимо возвращать более одного значения:
func intDivision(a: Int, b: Int) -> (частное: Int, остаток: Int) { возврат (а/б, а%б) } print(intDivision(11, 3)) // (3, 2) пусть результат = intDivision (15, 4) печать (результат. остаток) // 3
В отличие от Objective-C, Swift поддерживает сопоставление с образцом в операторе switch:
пусть комплекс = (2.0, 1.1) // действительная и мнимая части коммутационный комплекс { случай (0, 0): println("Число равно нулю") случай (_, 0): println("Число реальное") дефолт: println("Число мнимое") }
Во втором случае нам не важна действительная часть числа, поэтому мы используем _
для соответствия чему угодно. Вы также можете проверить дополнительные условия в каждом случае. Для этого нам нужно привязать значения шаблона к константам:
let complex = (2.0, 1.1) коммутационный комплекс { случай (0, 0): println("Число равно нулю") случай (пусть а, 0), где а > 0: println("Число реальное и положительное") случай (пусть а, 0), где а < 0: println("Число действительное и отрицательное") случай (0, пусть b), где b != 0: println("Число состоит только из мнимой части") случай пусть (а, б): println("Число мнимое с расстоянием \(a*a + b*b)") }
Обратите внимание, что нам нужно связать только значения, которые мы собираемся использовать в сравнении или в операторе case.
Чтобы узнать больше о кортежах, перейдите сюда.
Классы и структуры
В отличие от Objective-C, Swift не требует создания отдельных файлов интерфейса и реализации для пользовательских классов и структур. По мере изучения Swift вы научитесь определять класс или структуру в одном файле, а внешний интерфейс к этому классу или структуре автоматически становится доступным для использования другим кодом.
Определение классов
Определения классов очень просты:
класс Бутылка { переменная громкость: Int = 1000 Описание функции () -> Строка { return "Эта бутылка имеет \(объем) мл" } } пусть б = Бутылка () печать (б. описание ())
Как видите, объявление и реализация находятся в одном и том же файле . Swift больше не использует файлы заголовков и реализации. Добавим к нашему примеру метку:
class Bottle. { переменная громкость: Int = 1000 метка переменной:Строка Описание функции () -> Строка { return "Эта бутылка \(этикетка) имеет \(объем) мл" } }
Компилятор сообщит об ошибке, поскольку метка является необязательным параметром и не будет содержать значение при создании экземпляра Bottle. Нам нужно добавить инициализатор:
класс Bottle { переменная громкость: Int = 1000 метка переменной:Строка инициализация (метка: строка) { self.label = метка } Описание функции () -> Строка { return "Эта бутылка \(этикетка) имеет \(объем) мл" } }
Или мы могли бы использовать Необязательный тип
для свойства, которое не нужно инициализировать. В следующем примере мы сделали том
и Дополнительное целое число
:
класс Бутылка { переменная громкость: Int? метка переменной:Строка инициализация (метка: строка) { self.label = метка } Описание функции () -> Строка { если self.volume != ноль { return "Эта бутылка \(этикетка) имеет \(объем!) мл" } еще { return "Бутылка \(этикетка)" } } }
Структуры
Язык Swift также имеет structs
, но они гораздо более гибкие, чем в Objective-C. В следующем руководстве по коду определяется структура
:
struct Seat. { переменная строка: Int буква переменной: строка init (строка: Int, буква: строка) { self.строка = строка self.letter = буква } Описание функции () -> Строка { вернуть "\(строка)-\(буква)" } }
Подобно классам в Swift, структуры могут иметь методы, свойства, инициализаторы и соответствовать протоколам. Основное различие между классами и структурами заключается в том, что 9Классы 0017 передаются по ссылке, а структуры передаются по значению .
Этот пример демонстрирует передачу классов по ссылке:
let b = Bottle() print(b.description()) // бутылка "b" имеет 1000 мл переменная b2 = b б.объем = 750 print(b2.description()) // бутылки "b" и "b2" имеют 750 мл
Если мы попробуем аналогичный случай с struct
, вы заметите, что переменные передаются по значению:
var s1 = Seat(row: 14, letter:"A") переменная s2 = s1 s1. letter = "В" print(s1.description()) // 14-B print(s2.description()) // 14-А
Когда мы должны использовать структуру
и когда мы должны использовать класс
? Как и в Objective-C и C, используйте структуры, когда вам нужно сгруппировать несколько значений и ожидать, что они будут копироваться, а не ссылаться на них. Например, комплексные числа, 2D- или 3D-точки или цвета RGB.
Экземпляр класса традиционно известен как объект. Однако классы и структуры Swift гораздо ближе по функциональности, чем в других языках, и многие функции могут применяться к экземплярам класса или типа структуры. Из-за этого более общий термин, используемый в справочнике Swift, равен 9.0023 экземпляр , который относится к любому из этих двух.
Изучите основы классов и структур Swift здесь.
Properties
Как мы видели ранее, свойства в Swift объявляются с помощью ключевого слова var
внутри определения класса или структуры. Мы также можем объявить константы с помощью оператора let
.
структура FixedPointNumber { переменные цифры: Int пусть десятичные дроби: Int } var n = FixedPointNumber (цифры: 12345, десятичные дроби: 2) n.digits = 4567 // хорошо n.decimals = 3 // ошибка, десятичные дроби — это константа
Также имейте в виду, что на свойства класса строго ссылаются, если вы не добавляете к ним префикс weak
ключевое слово. Однако есть некоторые тонкости со слабыми необязательными свойствами, поэтому прочитайте главу об автоматическом подсчете ссылок в руководстве Apple Swift.
Вычисляемые свойства
Вычисляемые свойства фактически не хранят значения. Вместо этого они предоставляют геттер и необязательный сеттер для косвенного извлечения и установки других свойств и значений.
Следующий код предоставляет образец вычисляемого значения знак
:
enum Знак { Случай Положительный случае Отрицательный } структура SomeNumber { номер переменной: Int знак переменной:Знак { получить { если число <0 { вернуть знак. Отрицательный } еще { возврат Sign.Positive } } установить (новый знак) { если (newSign == Sign.Negative) { self.number = -abs(self.number) } еще { self.number = абс (self.number) } } } }
Мы также можем определить свойства только для чтения, просто реализовав геттер:
struct SomeNumber { номер переменной: Int var isEven:Bool { получить { возвращаемое число% 2 == 0 } } }
В Objective-C свойства обычно поддерживаются переменной экземпляра, объявленной явно или автоматически созданной компилятором. С другой стороны, в Swift свойство не имеет соответствующей переменной экземпляра . То есть к резервному хранилищу свойства нельзя получить прямой доступ. Предположим, у нас есть это в Objective-C
// . ч @interface OnlyInitialString : NSObject @property(strong) NSString *string; @конец // .м @реализация Толькоинициалстринг - (void)setString:(NSString *newString) { если (новая строка. длина > 0) { _string = [newString substringToIndex:1]; } еще { _строка = @""; } } @конец
Поскольку в Swift вычисляемые свойства не имеют резервного хранилища, нам нужно сделать что-то вроде этого:
class OnlyInitialString { Начальная переменная:Строка = "" переменная строка: строка { установить (новая строка) { если countElements(newString) > 0 { self.initial = newString.substringToIndex (предварительный (newString.startIndex, 1)) } еще { само.инициал = "" } } получить { вернуть self.initial } } }
Свойства более подробно описаны здесь
Продолжение следует
В Swift есть много других важных новых вещей, о которых нужно узнать, таких как обобщения, взаимодействие с библиотеками Objective-C, замыкания, необязательные цепочки и перегрузка операторов. Одно руководство не может полностью описать новый язык, но я не сомневаюсь, что об изучении программирования на Swift будет написано гораздо больше. Тем не менее, я считаю, что этот быстрый просмотр поможет многим разработчикам Objective-C, которым не удалось найти время и изучить детали языка Swift, встать на правильный путь и позволить птице Swift поднять их на новые высоты.
Основы разработки приложений на Objective-C
Об этом курсе
4151 недавних просмотров
Введение в язык программирования Objective-C. Это подготовит вас к более обширной разработке приложений для iOS и создаст основу для более сложных тем по разработке iOS.
Гибкие сроки
Гибкие сроки
Сброс сроков в соответствии с вашим графиком.
Совместно используемый сертификат
Совместно используемый сертификат
Получите сертификат по завершении
100% онлайн
100% онлайн
Начните немедленно и учитесь по собственному графику.
Специализация
Курс 1 из 6 в рамках специализации
Разработка iOS для творческих предпринимателей
Часов для прохождения
Прибл. 15 часов на прохождение
Доступные языки
Английский
Субтитры: арабский, французский, португальский (европейский), итальянский, вьетнамский, немецкий, русский, английский, испанский
Приобретаемые навыки
- Разработка приложений для iOS
- Компьютерное программирование
- Xcode
- Objective-C
Гибкие сроки
Гибкие сроки
Сброс сроков в соответствии с вашим графиком.
Общий сертификат
Общий сертификат
Получите сертификат по завершении
100 % онлайн
100 % онлайн
Начните сразу и учитесь по собственному расписанию.
Специализация
Курс 1 из 6 в рамках специализации
Разработка iOS для творческих предпринимателей
Часов для прохождения
Прибл. 15 часов на выполнение
Доступные языки
Английский
Субтитры: арабский, французский, португальский (европейский), итальянский, вьетнамский, немецкий, русский, английский, испанский
Инструкторы
Дон Паттерсон
Associate Professor
Informatics and Computer Science
52,622 Learners
5 Courses
Sam Kaufman
Partner at Gradient
52,622 Learners
5 Courses
Offered by
Калифорнийский университет в Ирвине
С 1965 года Калифорнийский университет в Ирвине сочетает в себе сильные стороны крупного исследовательского университета с щедростью несравненного местоположения в Южной Калифорнии. Непоколебимая приверженность UCI строгим академическим наукам, передовым исследованиям, а также лидерству и развитию характера делает кампус движущей силой инноваций и открытий, которые во многих отношениях служат нашим местным, национальным и глобальным сообществам.
Reviews
4.6
Filled StarFilled StarFilled StarFilled StarHalf Filled Star
180 reviews
5 stars
75.09%
4 stars
18.18%
3 stars
3.45%
StarFill StarFill StarFill 2 звезды
1,45%
1 звезда
1,81%
ЛУЧШИЕ ОТЗЫВЫ ОТ FOUNDATIONS OF OBJECTIVE-C APP DEVELOPMENT
111111111110002 от BIJan 10, 2016
Отличный курс для начала разработки IOS!
Я хочу еще!
Пожалуйста, добавьте еще один класс с дизайном UX для приложений IOS, пожалуйста!
Заполненная звездаЗаполненная звездаЗаполненная звездаЗаполненная звездаЗаполненная звезда
by SCN 14 ноября 2015 г.
Учитель очень хорошо объясняет концепции, лежащие в основе языка Objective-C.
Часть указателей объяснена очень хорошо.
Заполненная звездаЗаполненная звездаЗаполненная звездаЗаполненная звездаЗаполненная звезда
by MM11 марта 2016 г.
Очень хорошее начало для всех, кто хочет изучить язык Objective-C, а также получить базовые навыки разработки под IOS.
Filled StarFilled StarFilled StarFilled StarFilled Star
by ARM 13 марта 2016 г.
Найдите время для этих наград, особенно если вы хотите узнать больше о приложениях для iOS и буквально как можно скорее освоить технологию.
Просмотреть все отзывы
О специализации «Разработка iOS для творческих предпринимателей»
Эта специализация посвящена основам разработки приложений для iOS. Вы приобретете навыки, необходимые для создания собственного приложения, в том числе свободное владение концепциями пользовательского интерфейса Objective-C, UIKit и SpriteKit, и научитесь использовать сети, безопасность, аудио, видео, определение местоположения и датчики. В финальном проекте Capstone вы примените свои навыки для создания сетевой игры, которая использует датчики на телефоне для создания уникального игрового опыта, и которую вы сможете продемонстрировать в заявлениях о приеме на работу и на собеседованиях или предложить в магазине iTunes.
Часто задаваемые вопросы
Когда я получу доступ к лекциям и заданиям?
Что я получу, подписавшись на эту специализацию?
Доступна ли финансовая помощь?
Есть вопросы? Посетите Справочный центр для учащихся.
Какой из них выбрать для вашего следующего приложения для iOS?
В 2014 году Apple представила новый, более простой способ создания приложений для iOS — Swift. Однако в 2020 году ИТ-менеджеры и технические директора все еще пытаются выбрать между Objective-C и Swift. Чтобы развеять любые сомнения, мы сравнили их и подготовили это руководство.
Что такое Objective-C?
Objective-C — объектно-ориентированный язык программирования, используемый Apple с 90-х годов. Он сочетает в себе преимущества двух более ранних языков — C и Smalltalk.
В 1996 году Apple обогнала NeXT, инструменты разработчика которого будут использовать Objective-C. Эти инструменты позже были включены в Xcode. Так Apple начала использовать Objective-C для разработки под Mac OS X. В результате Objective-C стал языком выбора для всех, кто хотел создать приложение для OS X и iOS.
Что такое Свифт?
История Swift намного проще и короче. Он был создан Apple и представлен на Всемирной конференции разработчиков в 2014 году. Это совершенно новый язык, предназначенный для разработки программного обеспечения для операционных систем Apple. С тех пор язык сильно развился. Самая последняя стабильная версия была выпущена 29 апреля 2020 г. и носит название 5.2.4.
В чем смысл сравнения Objective-C и Swift?
У этой дилеммы есть как минимум две причины.
Во-первых, они оба поддерживаются Apple и используются для их продуктов. Если подумать о нативном iOS-приложении, то эти два сделают «самое нативное».
Во-вторых, Swift не является прямым преемником Objective-C. Два языка имеют разные возможности и одновременно используются для разработки мобильных приложений iOS.
Разработчики и продакт-менеджеры задаются вопросом, какой из них лучше. Какой из них удовлетворит их потребности и не ударит по их бюджету?
Если вы не знаете, какой выбрать Swift или Objective-C для iOS-приложения, которое вы планируете разрабатывать, вы это узнаете, когда прочитаете эту статью.
Как сравнить Swift и Objective-C?
Мы часто сравниваем технологии и языки программирования. Частично для удовлетворения наших потребностей, частично из-за нашего стремления поделиться этими знаниями с вами.
Несмотря на то, что вы можете придумать десятки функций для сравнения, мы решили сосредоточиться на десяти наиболее важных вопросах. Все они влияют на стоимость, качество и удобство разработки iOS-приложений. Приведенный ниже список и сравнение помогут вам определить, какая технология лучше всего подходит для вашего проекта.
Среда разработки
В среде разработки происходит волшебство. Важно, существует ли простая в использовании среда, насколько она дорогая и есть ли на рынке какие-либо альтернативные решения.
Если вы используете Objective-C для разработки приложения для iOS или OS X, вы, скорее всего, будете использовать Xcode IDE. Существуют и другие доступные среды, такие как AppCode или Visual Studio Code от Microsoft, но для правильной работы им нужен Xcode.
Xcode предоставляет вам комплекты для разработки программного обеспечения, которые содержат практически все, что вам нужно для разработки приложений для iOS. Инструменты, компиляторы, API и фреймворки — все это есть. Кроме того, существуют настраиваемые готовые элементы, которые вы можете использовать в своем приложении.
Xcode интегрирован с Cocoa и, что еще важнее, с Cocoa Touch — средой разработки приложений для iOS. Однако, если вы решите использовать Swift, Cocoa Touch также позволит вам создавать приложения для Apple Watch и Apple TV.
Однако это не единственное отличие среды разработки. Есть еще что-то под названием Swift Playgrounds. Вы можете использовать его для обучения кодированию на Swift, а также в качестве среды для тестирования небольших частей кода без компиляции всего кода и создания полного приложения. Просто, когда у вас есть идея решения, вы пишете код в Playgrounds и тут же проверяете, как он работает.
Со Swift вы по-прежнему можете работать в той же среде, что и Objective-C, но вы также получаете доступ к более новым решениям, расширяющим возможности. Этот раунд для Swift.
2. Пользовательский интерфейс APP
Оба языка являются родными для iOS, поэтому не нужно беспокоиться о том, будет ли ваше приложение выглядеть и работать безупречно. Будет, независимо от того, какой из них вы выберете. Самая большая разница заключается в совместимости с iOS и простоте разработки пользовательского интерфейса.
Objective-C стар как мир, поэтому ваше приложение будет работать на любой доступной версии iOS. Swift, с другой стороны, требует как минимум iOS 7. Это означает, что вам нужно проанализировать, какие устройства есть у ваших пользователей, и решить, нормально ли для вас ограничиться устройствами с iPhone и iPad, выпущенными после 2013 года. Честно говоря, таких устройств нет. не так много людей, которые все еще используют устройства старше 7 лет, так что это не должно быть проблемой.
Что касается простоты разработки пользовательского интерфейса, Apple представила SwiftUI. Этот инструмент дизайна пользовательского интерфейса, встроенный в Xcode 11, работает с iOS 13 (или новее, когда она появится). Это упрощает создание собственного пользовательского интерфейса для всех платформ Apple. Вы можете собрать свой пользовательский интерфейс, написав код или настроив предварительный просмотр. Изменения видны как в коде, так и в превью одновременно.
Ничья. Однако в будущем преимущество Swift, вероятно, возрастет.
3. Скорость кодирования
Скорость кодирования влияет на общую стоимость создания приложения и сокращает время выхода на рынок. Несмотря на то, что и Objective-C, и Swift являются родными языками для iOS, они не похожи друг на друга. Swift — гораздо более современный язык. Это также удобно для человека благодаря более простому синтаксису. Это означает, что ему также легче учиться.
Более того, говорят, что одно и то же приложение, написанное на Swift, будет иметь только 30% строк кода по сравнению с приложением, написанным на Objective-C. Популярным примером является Lyft, который преобразовал Objective-C в Swift, потеряв более 60% кода. Уменьшение объема кода не только ускоряет процесс разработки, но и приводит к уменьшению количества ошибок, а также к более быстрому и дешевому тестированию.
И снова Свифт побеждает.
4. Производительность
Чем лучшую и более подходящую технологию вы выберете, тем выше производительность. С более высокой производительностью приходит лучший UX, более простой рефакторинг и обслуживание и многое другое.
Apple утверждает, что Swift в 2,6 раза быстрее, чем Objective-C. Это возможно благодаря тому, что Swift был создан как совершенно новый язык с целью быть... быстрым.
Несмотря на то, что Apple оснастила Objective-C сборщиком мусора, он по-прежнему не так эффективен, как хорошо написанный код Swift. Более простой синтаксис и проверка типов во время компиляции помогают Swift превзойти Objective-C. Для оптимизации управления памятью Swift использует ARC (автоматический подсчет ссылок). Кроме того, Swift поддерживает динамические библиотеки, которые также повышают производительность приложений.
Swift побеждает, и его преимущество над Objective-C будет расти.
5. Сообщество и поддержка
Надлежащая поддержка дает вам уверенность в том, что у вас будет доступ к ноу-хау, необходимым для успешного развития. Помимо профессиональной поддержки, также полезно быть частью сообщества экспертов, которые поддержат вас своим опытом и знаниями.
Хотя Apple по-прежнему поддерживает Objective-C, он никогда не был языком с открытым исходным кодом. Swift, наоборот, с открытым исходным кодом, так что вы можете подробно посмотреть, как он работает, и более основательно разобраться в его зачатках. Но есть еще кое-что. Открытость означает, что больше людей участвует в большем количестве проектов и больше источников, доступных для разработчиков Swift.
Хотя сообщество Objective-C существует уже более 30 лет, его численность будет уменьшаться. Вместо этого новички, как правило, изучают Swift, и с каждым годом становится все меньше программистов, которые могли бы поддержать вас своим опытом. Даже сегодня среди пользователей StackShare около 3500 заявляют об использовании Objective-C и более 6000 используют Swift. В то же время сообщество разработчиков Swift очень важно. Более того, даже другие компании разработали свои платформы Swift (например, IBM).
Опять же, Свифт явно выигрывает этот раунд.
6. Инструментарий
Стандартной среды IDE обычно недостаточно для сложной разработки. Для обеспечения достаточного удобства разработчики используют дополнительные инструменты. Программисты Objective-C или Swift ничем не отличаются. Хотя расходники разные.
Благодаря долгой истории Objective-C вы найдете множество инструментов, предоставляемых Apple и некоторыми сторонними компаниями. Однако я бы не стал рассчитывать на создание новых инструментов для разработки на Objective-C.
С другой стороны, поскольку Swift является языком с открытым исходным кодом, очень легко найти инструменты, предоставляемые сторонними компаниями и участниками для этого языка. Кроме того, Apple предоставляет вам широкий спектр инструментов для повышения производительности разработки. Недавно они анонсировали такие инструменты, как PencilKit, поддерживающий Apple Pencil, SiriKit, поддерживающий сторонние приложения с помощником Apple, или MapKit, расширяющие возможности настройки пользовательского интерфейса.
Swift и здесь выигрывает, хотя преимущество не такое большое. Однако в будущем среда Swift будет развиваться гораздо быстрее, чем среда Objective-C.
7. Стабильность
Objective-C работает с нами уже более 30 лет. Последней выпущенной версией была 2.0, и она существует с 2016 года. Она не будет более стабильной, чем эта. Если есть какие-либо ошибки, мы уже знаем об этом.
Сейчас Swift всего 6 лет, а Swift 5 был выпущен год назад в марте 2019 года. Сегодня мы можем использовать версию 5.2.4. Это показывает, что Swift менее стабилен, чем Objective-C, но это связано с постоянными улучшениями и развитием.
Несмотря на разницу в возрасте, я объявлю здесь ничью.
8. Документация
Значение документации невозможно переоценить. Чем лучше вы знаете язык и его инструменты, тем легче избежать ошибок.
Оба языка имеют обширную документацию. Objective-C в основном потому, что он существует уже более 30 лет. Вы можете найти его документацию в архиве Apple. Но зато документация по Swift постоянно обновляется. Вы найдете больше новых источников для этого языка. Кроме того, имейте в виду, что это открытый исходный код, поэтому вы можете найти много других сторонних источников. Вы должны начать с сервиса Apple для разработчиков и специальной веб-страницы Swift. Также доступен репозиторий GitHub для Swift.
Благодаря постоянной актуализации Swift выигрывает и в этом раунде.
9. Зрелость платформы
Objective-C намного старше Swift. Но значит ли это, что он более зрелый? Swift был разработан с учетом опыта Apple с Objective-C.
Таким образом, даже если его история намного короче, Swift не является незрелым, поскольку он опирается на давнюю традицию. Более того, мы уже используем версию 5.2.4, и это только показывает, что Swift растет намного быстрее.
Компания Apple постоянно старается сделать Swift вашим приоритетным выбором. Среда вокруг Swift растет, и хотя Objective-C может быть более зрелым,
Swift тоже «взрослый». Итак, у нас здесь ничья.
10.
Кадровый резерв
Решение вашей мечты может быть лучшим из когда-либо виденных, но без специалистов, умеющих им пользоваться, оно бесполезно. Для компании крайне важно знать, насколько дорого и легко найти их разработчиков.
Согласно недавнему индексу Tiobe, опубликованному в мае 2020 года, Swift занимает 11-е место по популярности, набрав почти в три раза больше голосов, чем годом ранее. Objective-C получил только 50% голосов за Swift. Количество разработчиков Objective-C будет уменьшаться, а количество разработчиков Swift будет расти.
На это есть несколько причин. Во-первых, Apple, вероятно, будет неуклонно отказываться от Objective-C. Вы можете наблюдать, как развивается и продвигается Swift. Во-вторых, Swift гораздо проще изучить и начать программировать. В-третьих, Swift — это язык с открытым исходным кодом, и это всегда способствует росту сообщества.
Свифт выигрывает последний раунд с преимуществом в нос.
Примеры приложений для iOS, написанных на Swift и Objective-C
Еще один фактор, который вы можете принять во внимание, — это то, кто и как использует определенный язык. Только на этот раз нужно быть осторожным с выводами. iOS-приложения, созданные до 2014 года, скорее всего, будут написаны на Objective-C, и основная причина этого — просто отсутствие Swift до этого года.
Сегодня довольно часто компании рассматривают возможность преобразования Objective-C в Swift. Между тем, мы не слышали о том, чтобы кто-то пытался преобразовать свой код в обратном порядке. Более того, поскольку оба языка могут использоваться в одном и том же приложении, очень часто вы будете сталкиваться с программами, написанными одновременно на Objective-C и Swift.
Например, Uber использует как Objective-C, так и Swift. Lyft, с другой стороны, полностью перешел на Swift. То же самое с LinkedIn и их приложениями. Трудно найти компанию, которая хочет остаться на Objective-C. И это неудивительно.
Подведение итогов
В этом сравнении Swift и Objective-C мы хотели дать вам все необходимое, чтобы выбрать именно то, что вам нужно.