Alexey Suvorov dev blog

Мой разработческий блог

Archive for Январь 2013

iOS development глазами .net разработчика — неделя 1

3 комментария

Про железо

У меня отличный ноутбук, нет, правда, ASUS Zenbook ux31. Это действительно классная машина с core i7 на борту и последнее что я хотел бы покупать себе какой то там макбук, но яблочники не оставляют выбора. Совсем. Да, я знаю про VmWare и нет, писать так код — прямой путь в дурку. Пришлось купить макбук на ebay, а потом и айфон. Всё вместе стоило мне в районе 35000р — это много. Для сравнения попробовать писать под андройд мне стоило 0р. Наверное макбук стоит своих денег, у него хороший экран и удобная клавиатура, он почти не тормозит (мне достался macbook pro 15″ core i5/4GB RAM) и совсем нет уродливых, тормозных программ от производителя (луч поноса в сторону разработчиков ASUS). Про айфон я думаю нет смысла рассказывать, но я наконец смог составить своё мнение о всех известных iphone приложениях и до сих пор не понимаю почему так много шума вокруг instagram.

Про софт

Софт бесплатный. Это хорошо. И на первый взгляд девелоперский софт хорошего качества. Это всегда меня всегда удивляло. Object-C  не производит впечатления современного языка, языка «на котором можно писать круто», но яблочники
этого не знают и пишут себе вполне нормальные приложения для разработки. На текущий момент версия Xcode — 4.5 — это хорошо, она уже знает про айфон 5, правда Apple  не особо парится по поводу обратной совместимости, так что самая ранняя версия эмулятора который можно скачать — это iOS 5, winphone разработчиков это заявление совершенно не смутит, а вот суровые парни с андройдами возмутятся. Совершенно зря — как показывают разные источники в интернетах на iOS нет этого дикого и необузданного зоопарка версий и устройств с разными разрешениями/количеством памяти и т.д. Яблоко пользователи очень дружно обновляются буквально в первые же дни выхода новой версии, так что по сути нужно думать только о последней версии и версии перед последней.

Про код

Object-C непривычный, очень. Настолько непривычный что я откладывал знакомство с ним на столько, на сколько это было возможно. Я попробовал решение от xamari с их c# для iOS, но, во первых стоит оно 900$, во вторых они всё равно используют графический дизайнер Xcode для UI, а это то, где на данный момент я провожу 70% времени. Ещё было интересно вспомнить детство и самому последить за памятью, но меня ждало разочарование — в iOS 5 встроили ARC (automatic reference counting) и теперь компилятор сам всё делает и пресекает любые попытки вызвать release или dealloc. Вот тут статейка (http://clang.llvm.org/docs/AutomaticReferenceCounting.html). Так же, оказалось что тут есть лямбды и авто проперти. Собственно после этого язык перестал казаться очень уже странным и сейчас всё сводится к поиску нужных методов по документации, которая, кстати, на порядок лучше чем у ms по удобству использования и информативности. Одно могу заметить — не стоит бояться object-c — порог вхождения низкий и можно быть уверенным что не возникнет неразрешимых ситуаций из за неправильно работающей абстракции.

Про дизайнер

Дизайнер не сильно отличается по своей сути — есть XML, в нём что то типа байндингов, положение элементов, размеры и всякие там цвета. Были трудности с пониманием отличий push и modal переключений на storyboard и как они влияют на навигацию, но это не так сложно как кажется. Вот с чем  действительно есть сложности — так это с пятым рядом иконок. Жизнь была прекрасна: все экраны имеют одинаковое разрешение, ретина дисплей просто удвоил количество точек сохранив соотношение сторон и привнеся 0.0 изменений в дизайнер. Но мир уже не будет прежним с появлением 4-х дюймовых экранов — теперь яблочники хлебнули горя которое решают на винфоне с помощью silverligth изначально предназначенного для таких задач, а как это решают на андройде я пока сам не разобрался. Собственно в 6 iOS SDK есть набор спец классов растягивающих элементы, но работает этот набор классов только для iOS 6, что делает программу неработоспособной в предидущих версиях iOS. Но в принципе и без этих классов есть возможность всё сделать правильно, если использовать правильные значения для Origin и Autosizing. Ещё один важный штрих — работа с жестами. Распознание жестов это настолько базовая вещь для смартфонов, что выносить её в тулкит как это сделано в winphone — преступление против человечности. В iOS всё сделано правильно, не идеально и нужно будет повычитать x-ы и y-и, но жесты абсолютно органично встроенная базовая функциональность.

Итого

iOS оставляет очень благоприятное впечатление. Разрабатывая приложение с абсолютно идентичной функциональностью для обеих платформ я могу сказать, что на айфоне за два дня была готова функциональность на которую в winphone ушла неделя. Но посмотрим что будет дальше, я ещё не добрался до работы с zip и JSON на object-c.

Written by alexeysuvorov

07.01.2013 at 9:01 пп

Опубликовано в iOS