Хочешь быть iOS разработчиком? Будь им!

На хабре в прошлом месяце была опубликована статья Конкурс ВК: Мессенджер для Android. Как это было!, в которой автор поделился своими мыслями о конкурсе и опубликовал список ресурсов и статей, которые помогли ему в создании приложения. Так как в последнее время я начал изучать разработку под iOS, то у меня скопилось некоторое количество ссылок, которые могут быть полезны для начинающих. Поэтому я последую его примеру и сделаю то же самое, только для своей платформы. Надеюсь, кому-нибудь они окажутся полезны и сэкономят немного времени.



Глава 1. Начало.
Все началось с того, что я, и еще несколько ребят выбрали в качестве учебного проекта разработку приложения под Ipad. В процессе поиска было найдено руководство от Apple, в котором компания подробно расписала основные положения и особенности разработки под свои платформы.
В качестве языка был выбран Objective-C. Вначале Objective-C вызвал небольшое удивление, но распробовав, он пришелся по вкусу:

Xcode также выглядел угрожающе. Но эти видеоуроки помогли в нем освоиться и разобраться.
Глава 2. Основы.

Глава 3. Базы данных.
Глава 4. Работа со звуком: приготовьтесь, будет громко!

Глава 5. Анимация: делаем это красиво.
Глава 6. Работа с сетью

Глава 7. Кастомизация элементов.


Глава 8. Тестирование: делаем качественный продукт.
Глава 9. Локализация: готовимся к завоеванию мира.
Глава 10. Для дизайнеров.
Глава 11. In-App Purchases: монетизация, монетизация, монетизация!
Глава 12. Разное.

И отдельно стоит упомянуть:
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама
Комментарии 38
  • +1
    Отличная подборка. Must have :)
    • +1
      Отличный подбор статей, спасибо. Надеюсь народ оценит.
      • +7
        Сохранил, на всякий случай. Пятой точкой чую — пригодится.
        • +2
          Я себя почувствую сейчас лентяем.
          Только собрался заняться обучением, а тут бах, все разложено по полочкам. А поговорить гуглить? :))
          Но все ранов Огромное спасибо!
          • +1
            учитывая мой опыт и знакомых при освоении objective-c и разработки под ios — гуглить всё равно вы будете =)
          • +1
            Еще бы для Android такую же!
            Молодцы!
          • +2
            Спасибо!
            У меня браузер забит папками с ссылками.
            Но я все равно открываю Google и ищу в нем, т.к. находятся более свежие
            материалы.
            • +1
              Ссылка на Coder89 порадовала. Спасибо!
              • +3
                Сохранил в закладки и подвинул эту закладку на 1 место. Благодарю!
                • +1
                  Спасибо, как раз начал изучение, очень пригодится
                  • +2
                    По кастомизации UI хорошая подборка! Спасибо!
                    • +1
                      Спасибо, все очень нужное!
                      • +2
                        И опять не хватает CocoaPods! Впервые узнал о нем как раз в статье «Крутая подборка различных библиотек...», точнее в комментариях к этой статье.

                        Это нужно добавить или в основы или в разное, или отдельным пунктом «менеджер пакетов», например, с жирной пометкой must have.

                        Как говорится, попробовал один раз и уже не представляю себе жизни без cocoapods. Есть свои небольшие недостатки, но они не критичные, к тому же проект очень активно развивается, и все больше и больше разработчиков добавляют podspecs в свои github репозитории, а еще чаще это делает кто-то из сообщества.
                        • +1
                          Не совсем понял как он работает (почитав на сайте) и что именно делает. Если у меня несколько библиотек в проекте используют reachabillity к примеру (и это приводит к конфликту при компиляции), это программа сможем сама выключить повторяющиеся библиотеки где нужно?
                          • +3
                            Попробую объяснить.

                            Как оно работает и что делает.
                            После установки cocoapods (это ruby gem), в папке с проектом вы создаете Podfile — файл, в котором перечисляете все поды (библиотеки), которые хотите использовать. Например Podfile может быть таким
                            #Pods
                            platform :ios, :deployment_target => '4.0'
                            pod 'FlurrySDK'
                            pod 'Facebook-iOS-SDK'
                            pod 'TestFlightSDK'
                            pod 'Reachability', '~> 3.0.0'
                            pod 'CocoaLumberjack'

                            После команды pod install [xcode-project-name] cocoapods вытащит весь нужный код для каждого пода из git репозиториев, создаст в вашем workspace (нужно создать заранее) проект Pods, в котором сгенерирует все что нужно (конфигурации, пути для поиска .h файлов и либ, флаги компиляции и линковки), также добавит необходимые флаги, пути и инструкции в ваш исходный проект.

                            Вы можете настраивать все нужные вам параметры, например указать что данный под нужен какой-то конкретной версии, как Reachability в этом примере, и т.д.

                            Проблема зависимостей тоже решена за вас, в этом примере Facebook SDK использует другой под — SBJson, эта зависимость прописана в podspec файле Facebook SDK. SBJson нужной версии будет автоматически добавлен в число подов.

                            После этого у вас все 3rd party библиотеки будут лежать и собираться отдельно, в результате получается библиотека libPods, которая слинкуется с вашим главным target.

                            Удобства? Да много их. Забудьте про ручную операцию «скачать последнюю версию, распаковать, добавить файлы в проект, убедиться что старая версия подчищена». Ну или если вы это как-то автоматизировали, cocoapods предлагает новый способ автоматизации, работающий для огромного числа полезных библиотек. Получить последний код теперь можно одной простой командой 'pod install', все. Использовать конкретную версию либы — просто, изменил Podfile, выполнил 'pod install'. Опять же, вопрос зависимостей тоже решен, если один под использует другой под, cocoapods обо всем позаботится.

                            Насчет вашего конкретного примера, если несколько библиотек прямо внутри себя содержат один и тот же код Reachability, то это, скажем, неправильные библиотеки. Или они все вместе должны использовать отдельную либу Reachability, или по особенному называть свою имплементацию, как, например, в AddThis есть ATReachability, чтобы не было конфликтов при компиляции. В cocoapods вообще есть как минимум 2 либы для reachability, одна из них это чуть доработанный код из примеров Apple, в котором такие же имена классов и методов (эта либа есть в моем примере).

                            Это более менее поверхностное объяснение, но уже из этого примера видно, насколько можно облегчить себе жизнь.

                            Есть, конечно, свои заморочки. Например, SBJson уже дорос до версии 3.1, а Facebook SDK до сих пор использует 2.2.3, хотя у Facebook в коде всего один вызов к JSON парсеру. SBJson 3.1 не обладает обратной совместимостью с 2.2.3. Проблемы возникнут если нужно использовать Facebook SDK и SBJson 3.1 одновременно. Но и эти ситуации вполне решаемы.
                        • +1
                          Если кому-то мало этого мало: www.raywenderlich.com/tutorials
                          Туториалы на английском, но очень подробные, с них можно тоже начинать.
                        • +1
                          Спасибо большое за подборку. На некоторых сайтах бывал, теперь полезу на незнакомые сайты с подборки.
                          • +1
                            Muchas gracias!
                            • +1
                              Спасибо, экономит кучу времени на поиск!
                              • +2
                                http://cocoacontrols.com — огромное собрание UI (и не только) готовых контролов, классов, библиотек для iOS, большинство бесплатные.
                                • +1
                                  А не для начинающих можете что-то посоветовать?
                                  • +2
                                    В качестве языка был выбран Objective-C

                                    А был выбор? :)
                                    • +1
                                      Javascript, например :)
                                      • +1
                                        А подробнее можно? На JS можно создавать полноценные приложения для iOS?
                                    • НЛО прилетело и опубликовало эту надпись здесь
                                      • +1
                                        Ruby/RubyMotion
                                        еще было что-то на Ruby, Rhomobile или Rhodes, что такое.
                                      • +1
                                        Я бы еще добавил замечательный открытый стэндфордский курс «iPad and IPhone application development»
                                        CS193p
                                        есть в iTunes-U и youtube
                                        • +1
                                          Курс действительно хороший, ссылка на него уже есть в конце поста
                                        • +1
                                          Благодаря вашему чудо-топику теперь каждое утро начинается с приятного чтения про obj-c, вот уже третий день. :)
                                          • +3
                                            Статья устроила маленький хабраэффект на мой сайт :)
                                            • +3
                                              А мне приятно, что мои статьи вошли в такой StartKit :-)
                                              • –1
                                                Может помочь appletunity.ru
                                                • 0
                                                  Приятно видеть в списке свою статью! Давно не писал, правда. В планах продолжить серию статей про создание RestFul приложений на RestKit.

                                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.