Статьи

Почему разработчикам iOS все еще нужно знать Objective-C

Я все это хорошо помню, я был на 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

01

Давайте посмотрим на следующий фрагмент 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?

02

Хороший вопрос, позвольте мне обратиться к нескольким причинам, почему.

Отладка «неприятной» ошибки

Вы создали и опубликовали приложение в любом мобильном магазине? Если это так, вы наверняка столкнулись с неприятной ошибкой где-то в процессе разработки. Я знаю, что сделал … многие из них. Независимо от того, используете ли вы 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.

Не стесняйтесь оставлять свои комментарии ниже. Я прав или далеко от базы?