Да, это должно быть одно из тех непопулярных мнений, тем более, что Apple прилагает такие усилия для продвижения своего нового языка. И весь этот ажиотаж вокруг него. Не поймите меня неправильно, я бы хотел использовать Swift, и я полностью понимаю желание игнорировать все его недостатки, но давайте смотреть правде в глаза, он просто еще недостаточно зрелый, и хотя на бумаге он звучит великолепно, вы можете пожалеть об использовании это в некоторых случаях.

  1. Совместимость между Swift и C++ близка к нулю. Конечно, вы можете обернуть код C++ и затем вызвать его из Swift (звучит весело, правда?), но я этого не хочу. Я просто хочу, чтобы он работал так же, как и с Objective-C++.
    Совместимость с C тоже ненамного лучше. Хотя рекламируется обратное, вас может ждать сюрприз (недавно мне пришлось интегрировать libssh, и это было больно, я предполагаю, что вы можете становиться все лучше и лучше, но код все равно будет многословным и трудным для чтения).
  2. Инструменты, окружающие Swift, все еще кажутся бета-версиями. Xcode ужасно медленный для больших проектов. Конечно, вы могли бы написать Swift таким образом, который бы частично преодолел это, однако это ухудшило бы его и потребовало бы от вас научиться избегать всех тех проблем со статическим анализатором/компилятором/индексатором, которые замедляют его работу. Да, точно, больше работы для тебя, приятель.
    Черт, Xcode до сих пор не может даже реорганизовать (например, переименовать…) свойства или функции Swift.
  3. Это, наверное, очень спорно. Только об этом можно написать целую статью. Итак, у меня есть опыт работы с Python, а до этого я в основном занимался C. Я помню, когда я начал с Python, я был в ужасе от его свободной системы типов и динамического поведения. Я чувствовал себя неуверенно. Но когда я узнал об этом, я увидел в этом хорошее и понял, что большинство ошибок, которые у меня были, нельзя было избежать, используя более строгую систему типов. Однако я писал код гораздо быстрее.
    Насколько это актуально? Ну, даже если Swift намного менее многословен, чем Objective-C, я все равно трачу довольно много времени на удовлетворение требований системы типов. Вы можете возразить, что для того, чтобы написать правильный код, вам все равно нужно было связать эти концы с концами, независимо от языка. Возможно, вы правы, и я полностью за более безопасный код, но даже если вы обнаружите неожиданное поведение из-за того, что использовали защиту вместо простого сбоя, вы все равно не сможете выполнить саму операцию. Лучшее, что вы можете сделать, это откат, который является преимуществом, не спорю, но вам, вероятно, не стоило заходить туда и ловить такое поведение на ранних этапах модульных тестов.
    Дело в том, что более безопасный код требует больше работы, а соответствие системе типов загромождает ваш код. В конце концов, это может не стоить проблем, и пожертвовать безопасностью ради скорости может быть не такой уж плохой идеей.
  4. Swift постоянно меняется. Если Apple планирует изменить его так же, как они делают это со своим оборудованием, нас ждут веселые времена. Вы пытались перенести свой проект с 2.2 на 3.0? Это не так уж плохо. Тоже не так хорошо.

Нижняя линия. Swift великолепен, я мог бы предпочесть ему Objective-C 3.0, но это другой разговор. Однако, учитывая текущий статус, я буду продолжать использовать Objective-C/C++. Я не могу не задаться вопросом, сколько времени я смогу это сделать? Apple агрессивно продвигает Swift, и, вероятно, это всего лишь вопрос времени, когда использование Objective-C станет больше проблем, чем оно того стоит. Я могу только надеяться, что к тому времени Swift будет готов.