Архивы рубрики ‘Статьи’

Первое приложение на Swift

Swift-apple-developer

Язык программирования Swift был представлен в рамках международной конференции разработчиков WWDC 2014.

Я также рекомендую ознакомится с официальной документацией/книгой о языке swift от Apple, которая доступна в iBooks.

И так первая программа традиционно будет «Hello World».

Ассоциация объектов используя функции runtime

В умелых руках функции <obj/runtime.h> может быть мощным инструментом.

Для того чтобы расширить объект с дополнительными данными можно  используя механизм associated object.

Как можно понять  из названия происходит связывание объекта с другим объектом используя уникальный ключ.

Изменение окончания слова в зависимости от числа

При написании одной программы я столкнулся с такой проблемой как изменение окончаний слов в зависимости от числа.
Поискав решение в интернете, я обнаружил, что написанные функции не были универсальны, а некоторые из них были написаны не оптимально.
Тогда я решил написать свою функцию.

Анализ аварийных журналов iOS.

Для того чтобы ваше приложение попала в Appstore его нужно как следует протестировать на наличие ошибок. Оно должна безупречно работать не только на конкретном устройстве, но и на всей «линейке» данных устройств (iPhone3, iPhone4, iPhone5 и iPad) и на выбранных операционных системах.
Но даже после того как оно попало в AppStore это не гарантирует, что программа написана без ошибок и в определенной ситуации может быть сбой в результате которого, как говорят пользователи, программа «вылетает».
При сбое создается так называемый аварийный журнал, но куда при этом смотреть не понятно.

Многопоточность в iOS

Рассмотрим немного теории о многопоточности.

Терминология:

Поток – отдельная нить исполняемого кода в приложении. Каждый поток содержит собственный стек. Но всю остальную часть памяти поток делит с другими потоками того же процесса.

Процесс – запущенное приложение, которое может содержать много потоков.

Задача – абстрактная концепция некоторого количества выполняемой работы.

Вообще работа непосредственно с потоками не является лучшим выбором для приложений с распределенной архитектурой. Технологии идут вперед, и сейчас перед нами появляется выбор более высокоуровневых концепций. В OS X и iSO эти концепции представлены асинхронным дизайном (asynchronous design approach).

Пример использования потока

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

Я бы создал отдельный класс, который работает с AddressBook и только он имеет на него ссылку. Все остальные классы к нему обращаются и эти обращения синхронизируются так, что только одно обращение выполняется в любой момент времени. Для этого придется  создать serial queue и складывать в него запросы на чтение/запись.

Мы создаем один раз address book и serial queue. Когда надо с ней выполнить операцию, то клиент должен передать блок, который в качестве параметра получит AddressBookRef. Соответственно, все такие блоки построятся в очередь и serial queue будет их выполнять по очереди, следовательно, нет одновременного доступа к address book из нескольких потоков.

Open Source: Определение состояния сети с использованием ARC и GCD.

Класс Reachability вы можете очень легко добавить в свой код приложения для определения состояния сети.

Apple предоставила образец кода для тестирования сети, но с выходом iOS5 и добавлением ARC (Automatic Reference Counter) и GCD (Grand Central Dispatch) этот код с июля 2010 года считается устаревшим.

Сегодня я наткнулся на прекрасную библиотеку Reachability, которая совместима с ARC и GCD с очень чистым синтаксисом, облегчая отправки изменений в главном или в фоновом потоке.

Библиотека написана Tony Milion и вы можете её найти вместе с примерами её использования на Github.
Очень хорошее и чистое решение для определения состояния сети в iPhone и iPad приложений.

Git и генерация SSH- ключей на Mac.

Давайте сначала разберем что такое SSH ключи. (Secure Shell) в переводе с английского “безопасная оболочка”. Более подробно про SSH вы можете посмотреть в Викепедии. SSH позволяют безопасно передавать в незащищенной среде практически любой другой сетевой протокол.
Эти ключи нужны для авторизации, вы генерируете два ключа, один копируете на сервер github, а другой остается у вас на машине. В итоге когда вы будете осуществлять доступ к сервису со своей машины, будет происходить авторизация с помощью ключей (того который остался у вас на машине и того который вы поместили на github сервер).

Тестирование приложения на устройствах с использованием Xcode 5

Как вы знаете iOS 7 существенно отличается от своих предыдущих iOS.
Наиболее заметным изменением является кардинально переработанный интерфейс.

В этом уроке мы рассмотрим как можно запустить приложение на самом устройстве если конечно у вас есть аккаунт разработчика Apple. Стоимость регистрации аккаунта разработчика на данный момент составляет $99 в год.

Хотя это нормально для большинства случаев тестировать приложение на симуляторе, на практике существует ряд областей, которые не могут быть всесторонне протестированы на нем. Например, как бы вы ни старались трясти компьютер и куда бы не перемещали его,  ни акселерометр, ни GPS не обеспечат реального функционирования, хотя симулятор имеет возможность, если вы ее запрограммировали, конечно, после выполнения базового жеста встряхивания смоделировать данные о местоположении.

Полезные ссылки по програмированию на Objective-C

Итак. Программы для iPhone пишутся на языке objective-C.

Англоязычных форумов, книг и документации по разработке приложений для iPhone в сети немало. Тут не о них.

Русскоязычных материалов для разработчика iPhone приложений не очень много.

1. Для начинающих iPhone разработчиков есть очень неплохая статья на Wikipedia;

2. Пожалуй лучший русскоязычный ресурс для начинающих Pyobjc.ru Тут же есть и вяло шевелящийся форум;

3. Довольно оживленный форум, где собираются русскоязычные Objective-C программисты на Iphones.ru Единственный известный мне ресурс, который хоть как-то обновляется;

4. Еще один довольно интересный блог по изучению интерфейса xCode и языка Objective-C;

5.  Еще одна интересная статья;

6. Очень позновательный сайт iMaladec  по программирование под iPhone, iPad Objective-C уроки на русском, статьи, новости;

7  Добавлено намного позже:   Вот появился еще один интересный ресурс — lookapp.ru;

8 И еще один блог oxigen-objectivec.