Я все это хорошо помню, я был на WWDC 2014 , когда Apple впервые анонсировала новый язык программирования для iOS под названием Swift . Первая мысль, которая пришла в голову большинству участников, была чем-то вроде:
-
Чего ждать?
-
Я люблю Objective-C, теперь я должен изучать другой язык?
-
Это единственный способ создавать приложения для iOS 8?
Apple быстро успокоила большинство разработчиков, мягко представив Swift и предоставив ответы, которые они искали. Apple объявила, что разработчики iOS, использующие Swift, выиграют от современного языка, включающего множество новых функций, таких как строгая типизация, вывод типов, универсальные шаблоны и т. Д. Это все функции, которые волновали разработчиков Objective-C, но что было Стоимость? Оказывается, стоимость обучения языку программирования Swift была высокой.
Хотя изучение нового языка программирования, безусловно, не отпугнуло разработчиков Objective-C, ни одна из новых функций в Swift не стала препятствием для шоу. Они используют Objective-C для создания мобильных приложений с 6 марта 2008 года на iPhone OS.
С разработчиками, которые мало или совсем не имели опыта разработки с Objective-C, все было по-другому . Их мысли казались следующими:
-
Да! Я успешно избежал Objective-C.
-
Просто файл .swift без заголовка или файлов реализации! Потрясающие!
-
Полная грабеж языка вставки здесь !
Все остальные разговоры, которые они слышали, были Свифт , Свифт и еще Свифт . Ключ вынос в том , что Свифт был заменой Objective-C … в будущем (при этом последняя часть будучи быстро забывается).
Сообщение для разработчика Swift
Давайте посмотрим на следующий фрагмент Objective C для многомерного массива, который отображает значения в окне вывода в Xcode:
#import <Foundation/Foundation.h> int main () { /* an array with 5 rows and 2 columns*/ int a[5][2] = {{0,0}, {1,2}, {2,4}, {3,6},{4,8}}; int i, j; /* output each array element's value */ for ( i = 0; i < 5; i++ ) { for ( j = 0; j < 2; j++ ) { NSLog(@"a[%d][%d] = %d\n", i,j, a[i][j] ); } } return 0; }
Результаты:
a[0][0] = 0
a[0][1] = 0
a[1][0] = 1
a[1][1] = 2
a[2][0] = 2
a[2][1] = 4
a[3][0] = 3
a[3][1] = 6
a[4][0] = 4
a[4][1] = 8
Вам что-нибудь кажется знакомым? Возможно объявление ‘i’ и ‘j’ и for
цикл. Но что происходит с объявлением «а» или для чего этот глупый синтаксис NSLog
?
Я знаю, что вы не хотите писать этот код, как и я. Независимо от того, что мы хотим, это то, на что мы будем смотреть … пока что.
Почему я должен изучать Objective-C с момента запуска Swift?
Хороший вопрос, позвольте мне обратиться к нескольким причинам, почему.
Отладка «неприятной» ошибки
Вы создали и опубликовали приложение в любом мобильном магазине? Если это так, вы наверняка столкнулись с неприятной ошибкой где-то в процессе разработки. Я знаю, что сделал … многие из них. Независимо от того, используете ли вы Swift или Objective-C для написания своего приложения, базовая структура была написана на Objective-C. Ошибки, которые находятся глубоко в стеке выполнения, потребуют не только знания языка Swift.
Даже «не такой неприятный» баг
Я писал приложение на Swift и столкнулся с проблемой с TableView, которая должна была показывать данные, но не показала. Я сделал то, что сделал бы любой «великий» программист, и быстро выполнил поиск в Google, чтобы раздел представления таблицы был пустым . Из результатов поиска вы быстро увидите, что в него включено много решений, но, к сожалению, все они задействовали код Objective-C.
Что если мы включим Swift в поиск ? К сожалению, у нас нет решения, но есть руководство по началу работы на момент написания этой статьи.
Сколько времени пройдет, прежде чем в решения войдет Swift? Один год? Два года? Никто не знает, но мы знаем, что сообщество разработчиков говорит на Objective-C.
История научила нас, что переход идет в ВРЕМЯ
Сколько раз вылезало, когда вы видели, что «освобождают» и «сохраняют» задолго после (автоматического подсчета ссылок) ARC. Apple выпустила руководство по переходу, которое должно было облегчить боль. Вместо этого многие разработчики привыкли и продолжают использовать ручной подсчет ссылок.
Как насчет AutoLayout ? Большинство разработчиков сначала пробовали это через дизайнера и не могли получить желаемый эффект, поэтому делали это через код и все еще не получали то, что хотели, а затем просто отклонили это, сказав «пока не выйдет следующая версия Xcode» «.
Эти вещи требуют времени для разработчиков, и это было всего лишь два примера.
Демо-код! = Производственный код
Мы увидели, как быстро Свифт выступил с речью на WWDC, но насколько быстро … правда? Есть сравнения в различных блогах и StackOverflow, но они используют различные сборки Swift. Как Swift работает в реальном приложении, которому нужна скорость, к которой мы привыкли в Objective-C? Будьте уверены, со временем, Свифт поправится. Но у тебя есть время подождать?
Свифт все еще развивается
Свифт знает, какова его цель, но ничто не сравнится с опытом его старшего брата, Objective-C. Если вам нужно добавить код C ++ в приложение для iOS, вам нужно знать Objective-C.
Я не сказал игнорировать
Я буду первым, кто признает, что Objective-C труден в изучении, а Swift намного проще. Не поймите меня неправильно, вам не нужно знать все о Objective-C, чтобы писать приложения для Swift, но вы должны быть в состоянии прочитать его достаточно хорошо, чтобы преодолеть трудности, которые я описал. У Swift очень светлое будущее, но, как и Objective-C, потребуется время, чтобы повзрослеть. Я лично с нетерпением жду развития в Swift, но сейчас я буду придерживаться Objective-C.
Не стесняйтесь оставлять свои комментарии ниже. Я прав или далеко от базы?