Alexey Suvorov dev blog

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

Archive for the ‘iOS’ Category

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

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

Подходит к концу разработка моего небольшого приложения и я могу делать объективные выводы (хотя объективность как и нормальность понятия очень субъективные). Если кратко, то платформа очень продумана. За всё время я лишь несколько раз использовал велосипеды из интернетов, вместо стандартной функциональности и это хороший знак, потому что на winphone я вообще всё делаю сам. Нужно поставить памятник инженерам которые сделали удобный для использования фреймворк на objective-c мнение о котором у меня не поменялось — язык всё ещё недостаточно крут и очень перегружен синтаксически.

Сторонние библиотеки

Это писец граждане. Первая же библиотека которая мне понадобилась радостно сообщала в своём вики что я должен взять её сорцы и скопировать себе в проект. К такой дикости я был неготов и погуглил альтернативы которые… тоже подразумевали что будут использоваться как кучка файлов с сорцами. Нет, такое конечно тоже бывало, на работе у нас собственная версия библиотеки отвечающей за JSON сериализацию, но это исключение и неизвестно сколько боли нужно пережить каждый раз когда выходит очередное обновление. В результате я сдался и теперь у меня аккуратная папочка с сорцами сторонних библиотек.

Core Data

Не, не слышал. Сразу скачал себе FMDB и смахнул слезу умиления вспоминая институтские годы и ADO.net в версии 1.1. Я уверен что есть генераторы кода которые очень упрощают жизнь простого objective-c разработчика и генерируют DTO объекты из базы или наоборот, но мы с ними разминулись или они стоят кучу денег как и практически все программы на маке а я уже потратил все деньги на сам макбук :). Кстати про утилиты — в качестве бд я выбрал sqlite и очень удивился узнав что самый широко рекомендуемый бесплатный редактор — это plugin для firefox. Plugin!!! для firefox!!! Это был шок. Но он работает да. Но при этом хочу отметить что под Windows где Sqlite распространён… да никак не распространён есть бесплатная версия платного редактора которая работает ещё лучше. Хотя наверное сравнивать plugin для браузера с полноценным desktop приложением — это как издеваться над калекой.

Serialization

Тут то же самое что и в доступе к базам. В .net есть интерфейс ISerializable с двумя методами которые принимают стримы, в которые вы вольны писать что угодно (только то что нужно) для сериализации и читать потом для десериализации. Но на моей памяти этим интерфейсом никогда не пользовались. На objective-c его придётся вспомнить. В отсутствии метаданных единственный способ сериализации — всё руками, страшнее этого только SharpSerializer который я использовал в windows phone, перепишу его десериализацию при первой же возможности.

Written by alexeysuvorov

22.02.2013 at 8:46 дп

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

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