Comments 80
Присоединяюсь. Как раз начинаю разбираться с кодингом под айось.
Хорошие ссылки, но небольшие аннотации к ним просто необходимы! Что это и для чего. А то приходится открывать 100 вкладок и смотреть что так не то, что нужно.
Согласен. Мне, как новичку, не мешало бы ознакомиться с кратким описанием инструментов в одном месте. То бишь здесь.
Отлично, спасибо! Только вот по поводу либы «MKStoreKit» могу сказать что это абсолютно ненужная вещь, во-первых код ужасен, сплошные спагетти, во-вторых, она не особо то и помогает, нативный StoreKit прост как две копейки
Думаю о многих библиотеках из вышеперечисленных можно сказать подобное. Потому часто пишу свои велосипеды или не мало времени трачу на допиливание чужих. Из этого всего добра юзал токо: «FMDB», «GHUnit», «cocos2d-iphone» за уже 2.5 года опыта iOS разработки.
А по мне полезно. С ним покупка делается в одну строчку. Надо только задать блок после покупки и блок после отмены. Руками такое писать лениво.
Соглашусь. До этого использовал родной StoreKit и из проекта в проект использовал код повторно, т.е. копипастил в основном. Попробовал MKStoreKit, не знаю насколько код плох внутри, но «на поверхности» мне остается писать только пару строчек и я точно знаю что этот код прошел проверку в множестве других проектов, т.е. баги маловероятны.
Что означает пометочка [Must Have]? Я так понял — знать обязательно?
UFO landed and left these words here
UFO landed and left these words here
Спасибо. Добавьте ссылки на рекламные фреймворки, они необходимы для зарабатывания денег: adwhirl.com, smaato.com.
Скорее всего сделаю это во второй части, если будет актуально.
слушал вчера доклад по sio2 — докладчик рассказывал про печальный опыт использования. активно не рекомендовал.
Да я тоже не рекомендую, они просто есть :) Может кому-то интересно и кто-то любит боль?
ни фига не повторяет функционал ASIHTTPRequest, с отображением прогресса там все плохо, пришлось вернуться на неподдерживаемую ASIHTTPRequest
основной плюс и цель разработки ASI был как раз в создании очереди запросов. С появлением iOS4, в котором появились блоки — это стало уже не актуально. Блоги в связке с GCD работают эффективней и писать код намного проще.
Поэтому сейчас писать код с использованием ASIHTTPRequest есть смысл только в одном случае — это поддержка iOS3, но нужно иметь очень очень и очень везкие причины, чтоб это делать.
да, автор добавьте плиз в пост ещё и CocoaPods!!! Must have! Значительно ускоряет процесс втягиваниая, обновления и управления зависимостями либ! Хватит ручками кучей разных способов втягивать либы! =)
UFO landed and left these words here
GDataXML, кстати, одна из самых лучших либ для работы с XML по скорости/функционалу
UFO landed and left these words here
Я с другими не сравнивал, но для игр классно использовать Мармелад (я сейчас как раз одну пишу). Он низкоуровневый, поэтому удобно использовать более высокоуровневый движок. Советую Oxygine:
www.gamedev.ru/projects/forum/?id=159455
Добавлю чуть от себя:
PaperStack — Page Curl еффект как в iBooks не использующий private api, и на OpenGl
ReactiveCocoa — Обвертка над KVO, использую для биндинга, но возможности фреймворка намного шире.
AddThis — Шаринг в 3 сотни соц сетей, для тех кто не подружился с ShareKit, или нужна экзотика, но времени на изучение апи нет. Есть SDK и под iOS и под Android.
CrashKit — шлет отчеты об ошибках и падениях на почту, для тех, кому лень использовать TestFlight

Для тестирования:
Cedar — пишем BDD тесты в RSpec стиле
Kiwi — тоже самое, но на основе стандартного фреймворка для тестов. Мне больше нравится Cedar.
Frank — Cucumber для iOS. Рубисты оценят.

Ну и конечно же CocoaPods как репозиторий всего этого добра.
Кстати, по поводу огурца, я тут думал написать статью на эту тему, будет интересно хоть кому-нибудь?
Да, очень бы хотелось по BDD для iOS почитать. Только не кальку с зарубежных статей, а что-то свое (зарубежное уже пересмотрел).
Hint: насколько я понял большинство начальных статей по BDD написано для RoR, для iOS написано у всех для читателя, который уже хорошо имеет представление что это. Статьи BDD в iOS «для чайников» не хватает. Хотя с другой стороны меня это подвигло новый язык выучить just for fun :)
AddThis действительно выручает если нужна экзотическая соц. сеть. Как раз сейчас я хочу переключится с AddThis на ShareKit. Один из минусов AddThis — очень много тапов чтобы зашарить что-либо, грубо говоря это встроенный браузер, который отображает веб версию логина того же фейсбука, чтобы зашарить простой линк, нужно достаточно глубоко забраться и потом тапать Back раза 3 как минимум. Заказчик хочет зашарить буквально в один-два тапа и чтобы меню само закрылось как только линк отправлен, ну или максимум 1 тап, а не 3 раза «назад» и еще один раз «закрыть». И последнее — необходимость каждый раз вводить логин и пароль, надеюсь ShareKit этим не страдает.
Я использовал кастомный поповер, с кнопками шаринга в Фейсбук и Твиттер напрямую, есть такие методы в AddThis SDK, и дополнительной кнопкой для всех остальных сетей. Как показывает статистика, шарят в основном в один фейсбук.
Так шаринг в Facebook прикручивается за несколько минут с их родным framework.
ИМХО, пытался сделать конфету а получилась куча мусора. Если уже упоминаешь ShareKit, то никаких других фрэймворков, тем более официальных и гуглящихся за одну секунду, не надо. Да и three20 — прошлый век, по ряду причин лучше всегда и везде использовать родные контролы.
Хорошая статья и я хочу добавить немного отсебятинки :)
CI
fruitstrap — для установки/дебага .app на девайс из терминала, уже не поддерживается, но на Lion работает исправно

Для тестирования
tune-up — набор расширений для UIAutomation
mitmproxy — http(s) debugging tool
paros proxy — http(s) debugging tools, заброшенный но полезный, настраивается за 5 минут
Network Link Conditioner — для эмулирования различных сетей, идет в Xcode 4.1 и выше, только под OS X 10.7 и выше
Over-the-air distribution описание как настроить от apple
Это из-за Three20 Facebook app работает так медленно? :)
UX у Facebook app — это скорее анти-пример. UI жутко не отзывчивый (особенно в условиях плохого коннекта). Впечатление такое, что большая часть его написана без асинхронных вызовов. Я не понимаю почему нажатие на кнопку надо обрабатывать несколько секунд чтобы потом выдать мне пустой webview (контент которого только начинает подгружаться) с парой кнопок. Это оно иерархию с <10 views так долго строит?
three20 вроде уже не используеться в FBApp последней версии, вроде осенью читал про это где-то, сейчас не нашел. Новый фейсбву — это гибридное приложение, в отличие от предыдущего.
хех. Новичкам есть шанс пасть жертвами копипаста, так и не поняв что и как работает.
Наврно бородатые ассемблерщики думают тоже самое о языках более высокого уровня =)
Не согласен. Что касается iOS, часто встречаю «фреймверки» от девелоперов полные ликов и багов но с коментами а-ля «оно же работает». Т.е. это какбы уже модно чтоли, выпустить свой фреймверк или кастомный контрол, не задумываясь о его тестировании и тп. Далее оно копипастится в другой код и ошибки плодятся и плодятся.
А как правовая часть этого всего добра? На каких условиях, допустим, можно использовать AQGrid в своих платных приложениях?
entropydb похоже крутая штука. Кто-нибудь его юзал? Оно умеет как Core Data light-weight migration делать при обновлении версии?
CocoaAsyncSocket
асинхронные сокеты

OCMock
реализация моков для (unit) тестов

YandexMapKit
Яндекс-карты

Route-Me
мощная библиотека для карт, можно использовать OSM и многие другие сервисы тайловых карт

Пока еще можно оставлять комменты, добавлю свои 5 копеек.
Во-первых — сам пост отличный, я узнал для себя много нового, например те же Pods.
Но даже некоторые [Must Have] библиотеки я бы не стал особо рекоммендовать.

Начнем с ShareKit и AddThis, обе совсем не дружат с последней версией Facebook SDK. Все скомпилируется, слинкуется и даже запустится, но ничего зашарить через Facebook не выйдет. Вывод — обеим срочно требуется обновление, а судя по датам последних коммитов, эти либы уже морально устарели и отстали от мейнстрима, по крайней мере что касается фейсбука. А в моем случае я просто обязан был использовать последнюю версию Facebook SDK по определенным причинам. Выход — по прежнему использовать ShareKit и AddThis, только для фейсбука написать немного кода для шаринга, а лучше позаимствовать из Hackbook семпла.

Pods — замечательная вещь, но, опять же, со своими минусами. Поды обновляются не регулярно, некоторые могут быть давно заброшенными, а использовать хочется. Проблема же вот в чем, в моем случае, одна из либ потянула за собой под SBJson версии 2.2.3, а добавить еще один SBJson версии 3.1 уже нельзя. А мне как раз нужна более новая версия, т.к. активно использую некоторые классы из нее. Я избежал проблем просто добавив SBJson 3.1 в основной проект и все заработало. Но факт есть факт, некоторые поды тянут зависимости за собой, которые не обязательно будут послдней версии и возникают такие вот неприятности.

В общем, либы полезные, но не обязательно помогут во всех случаях.
>>В общем, либы полезные, но не обязательно помогут во всех случаях.
Вы правы, поэтому и я писал использовать «по возможности» :)

Насчет Pods — сегодня увидел в своем Google Reader свеженькую статью Introduction to CocoaPods от Ray Wenderlich.
Вопрос в тему: посоветуйте в дополнение к статье библиотеку для интерактивных графиков, чтобы бы можно было их зумить, при клике на линию выводить значение в точке. Т.е. ищу некоторую альтернативу CorePlot.
Простите конечно, но BlocksKit не «упрощает работу с блоками».
BlocksKit — это набор категорий над Foundation и UIKit классами, добавляющих методы, использущие блоки. Для итерации по коллекциям, для обработки эвентов и т.п.
И, кстати, «PDF Reader/Viewer» — это не библиотека, это приложение. Для чтения/отрисовки PDF они используют CoreGraphics.
А посоветуйте альтернативу RestKit, он какой-то сильно большой и не работает как надо. (банально не получается слинковать RestKit с проектом) Хотя сделал все как по хавте в официальной вики.
Не могу не поделиться — FrameAccessor.
Упрощает обращение к frame'у.

view.x = 15;
view.width = 167;

вместо

CGRect newFrame = view.frame;
newFrame.origin.x = 15;
newFrame.size.width = 167;
view.frame = newFrame;
Также не забывайте о Parse — мега-полезная штука для бэкенда.
Либо альтернатива от ребят из Харькова — QuickBlox.
Библиотека для работы с XML-RPC веб-сервисами: github.com/eczarny/xmlrpc (есть еще параллельная ветка от разработчиков Wordpress for iOS, там есть поддержка стриминга (ну, например когда надо отправить здоровый видеофайл, а грузить его в память целиком не хочется)).

Ну и про CocoaPods тут уже упоминали.
Only those users with full accounts are able to leave comments. Log in, please.