@alarmus, Я же не спорю с тем, что Swift лучше Objective-C. Наоборот, абсолютно согласен, что раз попробовав, назад уже совсем не хочешь. Но реальность такова, что Objective-C будет с нами ещё какое-то время, и с этим приходится мириться. Соответственно, то, что новый код написан на Objective-C, вовсе не говорит о том, что этот код плох (это вообще ничего не говорит о его качестве). Я рад, что вы/ваш заказчик можете себе позволить работать на Swift. Не всем так везёт) Впрочем, по вышеозначенным причинам я пока даже личные проекты на Swift не перевожу. Хотя хочется, да.
Вдогонку: рефакторинги Swift не поддерживаются ни в Xcode, ни в AppCode. В последнем, вроде как, есть rename, в Xcode и того нет. Если вам нужно использовать какие-то библиотеки на C++, нужно писать обёртки. А swizzling в Swift можно сделать, насколько я знаю, только для класса-наследника NSObject, т.е. для pure swift класса (о которых я писал, простите за англицизм) этого сделать нельзя. По крайней мере, мне такие способы неизвестны. Не исследовал этот вопрос глубоко (не было нужды), но полагаю, что и остальных runtime-трюков это касается (добавление методов в динамике, изменение классов и т.д.).
Впрочем, насколько я понимаю, зато в Swift есть возможность вызывать методы, а не отправлять сообщения, что эффективнее.
В общем, резюмируя, я очень жду воцарения Swift, стабилизации runtime, поддержки в IDE и вот этого вот всего. Но пока что Objective-C жив и в обозримом будущем таковым и останется.
@alarmus, Вы только что подтвердили, что ни одного серьёзного проекта на Swift Вы не сделали (обратите внимание, я не предыдущий комментатор). Компилироваться Swift перестаёт действительно каждый раз. Каждый. Меньше месяца назад убил полдня на перевод небольшого проекта с Swift 2.1 на Swift 2.2.
Хоть сколь-нибудь серьёзные библиотеки будут писаться на Obj-C ещё минимум пару лет, т.к. Apple – большие молодцы, и third-party Swift-библиотеку можно подключить только в виде динамического фреймворка, а динамические фреймворки поддерживаются только с iOS 8+, а на iOS 7 всё ещё ~5% пользователей. Есть Swift-only библиотеки, но это пока скорее исключение, чем правило.
“Не было ничего, что нельзя сделать на нём, а на Obj-C можно”, – да любая завязанная на runtime ерунда. Элементарный method swizzling для pure swift класса мне покажите, пожалуйста. Не покажете. “Зачем” – другой вопрос, но Вы же категорично заявили, что “не было ничего”. Извольте отвечать за свои слова.
Далее, runtime не стабилизирован. И не является частью системы. Пока что. Сюрприз-сюрприз. Так что если Вы делаете небольшое приложение на Swift, его размер вырастет на несколько мегабайт, т.к. рантайм поставляется вместе с приложением. С каждым приложением. А пользователи, вот незадача, смотрят на размер приложений при скачивании.
Впрочем, я всё это написал скорее из-за Вашего тона и надменности, чем из-за несогласия. Swift – потрясающий язык, и после него на Obj-C возвращаться действительно совершенно не хочется. Однако хоронить Obj-C ещё рано.
@kubachi, taptic engine сэмулирует нажатие, ок. А как я по отдаче пойму, на ту кнопку я попал или не на ту? А никак. Тактильные ощущения очень важны при слепой печати. Не только ощущение нажатия, но и интервалы между клавишами. Про “пупырышки” на f/j я вообще молчу.
@goodhoopoe, Уже несколько месяцев как не нужен. Точнее, аккаунт зарегистрировать нужно, но на своих устройствах можно тестировать бесплатно (в AppStore выложить не получится).
@bred1, Как нет-то? Есть там акселерометр, во всех айфонах он есть, начиная с первого. Просто в 5S, судя по статьям, он ощутимо глючит) А насчёт производительности согласен.
@beznosuk, Вам очень-очень-очень повезло. У mid 2012 – early 2013 моделей проблемы с видеокартой. Очень у многих. Apple программу расширенной гарантии открыла, но от этого не легче, т.к. меняют на такие же бракованные зачастую. Я менял logic board (стоит как пол-ноутбука) дважды. По гарантии, но оставлять основной рабочий инструмент в сервисе на месяц (у нас не очень хороший сервисный центр) – то ещё удовольствие. Последняя “материнка” держится, слава Богу) Посмотрим) Может, повезло)
Я это к чему: все, кто читает, не смотря на небольшую разницу в производительности, не берите модели mid 2012 – early 2013) Всем спасибо, я закончил)
Последние комментарии пользователя
4 мая 2016
@iBurokrat, Вы какой-то неправильный бунтарь :)
28 апреля 2016
@stepkin2, Ну, он-то прав в данном случае.
26 апреля 2016
Обычный A/B тест, нет причин для паники. Принцип может быть абсолютно любым.
15 апреля 2016
@alarmus, Я же не спорю с тем, что Swift лучше Objective-C. Наоборот, абсолютно согласен, что раз попробовав, назад уже совсем не хочешь. Но реальность такова, что Objective-C будет с нами ещё какое-то время, и с этим приходится мириться. Соответственно, то, что новый код написан на Objective-C, вовсе не говорит о том, что этот код плох (это вообще ничего не говорит о его качестве). Я рад, что вы/ваш заказчик можете себе позволить работать на Swift. Не всем так везёт) Впрочем, по вышеозначенным причинам я пока даже личные проекты на Swift не перевожу. Хотя хочется, да.
Вдогонку: рефакторинги Swift не поддерживаются ни в Xcode, ни в AppCode. В последнем, вроде как, есть rename, в Xcode и того нет. Если вам нужно использовать какие-то библиотеки на C++, нужно писать обёртки. А swizzling в Swift можно сделать, насколько я знаю, только для класса-наследника NSObject, т.е. для pure swift класса (о которых я писал, простите за англицизм) этого сделать нельзя. По крайней мере, мне такие способы неизвестны. Не исследовал этот вопрос глубоко (не было нужды), но полагаю, что и остальных runtime-трюков это касается (добавление методов в динамике, изменение классов и т.д.).
Впрочем, насколько я понимаю, зато в Swift есть возможность вызывать методы, а не отправлять сообщения, что эффективнее.
В общем, резюмируя, я очень жду воцарения Swift, стабилизации runtime, поддержки в IDE и вот этого вот всего. Но пока что Objective-C жив и в обозримом будущем таковым и останется.
15 апреля 2016
@rb, а кто спорит? Мне тоже очень нравится. Возражения по тому, что я в комментарии написал, есть? :)
14 апреля 2016
@alarmus, Вы только что подтвердили, что ни одного серьёзного проекта на Swift Вы не сделали (обратите внимание, я не предыдущий комментатор). Компилироваться Swift перестаёт действительно каждый раз. Каждый. Меньше месяца назад убил полдня на перевод небольшого проекта с Swift 2.1 на Swift 2.2.
Хоть сколь-нибудь серьёзные библиотеки будут писаться на Obj-C ещё минимум пару лет, т.к. Apple – большие молодцы, и third-party Swift-библиотеку можно подключить только в виде динамического фреймворка, а динамические фреймворки поддерживаются только с iOS 8+, а на iOS 7 всё ещё ~5% пользователей. Есть Swift-only библиотеки, но это пока скорее исключение, чем правило.
“Не было ничего, что нельзя сделать на нём, а на Obj-C можно”, – да любая завязанная на runtime ерунда. Элементарный method swizzling для pure swift класса мне покажите, пожалуйста. Не покажете. “Зачем” – другой вопрос, но Вы же категорично заявили, что “не было ничего”. Извольте отвечать за свои слова.
Далее, runtime не стабилизирован. И не является частью системы. Пока что. Сюрприз-сюрприз. Так что если Вы делаете небольшое приложение на Swift, его размер вырастет на несколько мегабайт, т.к. рантайм поставляется вместе с приложением. С каждым приложением. А пользователи, вот незадача, смотрят на размер приложений при скачивании.
Впрочем, я всё это написал скорее из-за Вашего тона и надменности, чем из-за несогласия. Swift – потрясающий язык, и после него на Obj-C возвращаться действительно совершенно не хочется. Однако хоронить Obj-C ещё рано.
10 апреля 2016
@AppleStyle, Я солидарен с Вадимом. У меня 5S при включённом LTE тоже умирает очень быстро, к сожалению, проверял не раз.
8 апреля 2016
@kubachi, taptic engine сэмулирует нажатие, ок. А как я по отдаче пойму, на ту кнопку я попал или не на ту? А никак. Тактильные ощущения очень важны при слепой печати. Не только ощущение нажатия, но и интервалы между клавишами. Про “пупырышки” на f/j я вообще молчу.
7 апреля 2016
@Eduard Sa, повторяете себе по утрам, глядя в зеркало? :)
7 апреля 2016
Во-первых, Acer Iconia. Во-вторых, если они это сделают, их порешат к чертям собачим. Как без тактильных ощущений вслепую-то печатать?
4 апреля 2016
@goodhoopoe, Уже несколько месяцев как не нужен. Точнее, аккаунт зарегистрировать нужно, но на своих устройствах можно тестировать бесплатно (в AppStore выложить не получится).
26 марта 2016
@bred1, Как нет-то? Есть там акселерометр, во всех айфонах он есть, начиная с первого. Просто в 5S, судя по статьям, он ощутимо глючит) А насчёт производительности согласен.
26 марта 2016
@beznosuk, Вам очень-очень-очень повезло. У mid 2012 – early 2013 моделей проблемы с видеокартой. Очень у многих. Apple программу расширенной гарантии открыла, но от этого не легче, т.к. меняют на такие же бракованные зачастую. Я менял logic board (стоит как пол-ноутбука) дважды. По гарантии, но оставлять основной рабочий инструмент в сервисе на месяц (у нас не очень хороший сервисный центр) – то ещё удовольствие. Последняя “материнка” держится, слава Богу) Посмотрим) Может, повезло)
Я это к чему: все, кто читает, не смотря на небольшую разницу в производительности, не берите модели mid 2012 – early 2013) Всем спасибо, я закончил)
23 марта 2016
@iKasp, Вы первый человек, которого я встречаю, который до сих пор зовёт его 5SE)
19 марта 2016
@xSphinx, Я боюсь, Linux + Apache + MySQL + PHP – это не совсем комплекс программ под мак :) Особенно Linux :)