Обновить
65.59

iOS *

Мобильная ОС компании Apple

Сначала показывать
Порог рейтинга
Уровень сложности

Как помочь детям учить иностранные языки? Воспользоваться мобильными приложениями, конечно!

Время на прочтение3 мин
Охват и читатели24K

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

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

Читать дальше →

Рекомендации по использованию SQLite на мобильных устройствах

Время на прочтение4 мин
Охват и читатели29K
В буржунете есть интересный документ по оптимизации SQLite на платформе BlackBerry. Однако, идеи, которые в нем содержатся, вообще говоря, относятся к любой мобильной платформе. Мы решили развить этот список и создать эдакий эталонный текст в рунете с набором полезных, вводных советов для программирования SQLite под мобильными устройствами. Принимаем ваши предложения в комментариях.

Читать дальше →

Синтезатор речи в iOS7

Время на прочтение2 мин
Охват и читатели13K
В iOS7 встроили синтезатор речи, теперь заставить свое приложение говорить вопрос пары строчек кода.

За синтез речи отвечает класс AVSpeechSynthesizer Достаточно передать ему текст обернутый в класс AVSpeechUtterance и текст будет прочитан смартфоном.

Голос зависит от локали, в том числе поддерживается русский. Речь звучит четко и приятно.

var speechSynthesizer = new AVSpeechSynthesizer ();
var speechUtterance =
  new AVSpeechUtterance ("Shall we play a game?");
speechSynthesizer.SpeakUtterance (speechUtterance);


узнать подробности и послушать как говорит iPhone

Новая статистика по использованию мобильных устройств детьми в Америке

Время на прочтение1 мин
Охват и читатели8.8K

Некоммерческая исследовательская компания Common Sense Media, которая занимается исследованием эффектов, которые оказывают средства массовой информации и технологии на молодых пользователей, представила свой второй доклад о том, как дети до 8 лет взаимодействуют с масс-медиа.

Под катом — перевод инфографики этого доклада.
Внимание - картинки!

Continuous Integration в XCode5

Время на прочтение2 мин
Охват и читатели13K
В пятой версии XCode появился Continuous Integration. Он работает через XCode службу OS X Server ($20, AppStore).

XCode Service умеет все тоже что и любой Continuous Integration сервер, возможно чуть меньше. Огромный плюс — полная интеграция с XCode и свойственная Apple «работа из коробки». Я запустил авто-сборку проекта за полчаса, хотя раньше ни разу не настраивал CI сервер. И не нужно курить мануалы как правильно собирать приложение из командной строки, как включить эмулятор или запустить тесты на устройстве.

xcode continuos integration
подробнее о возможностях

Облегчаем жизнь разработчику мобильных игр

Время на прочтение3 мин
Охват и читатели8.6K
Всем привет,

Сделать хорошую игру — это далеко не вся работа. Для того, чтобы получить законченный продукт, который можно будет успешно распространять, необходимо интегрировать в игру разного рода маркетинговые инструменты: трекинг реферальных установок, баннерокрутилки и офферволлы, модули подписки на новостную рассылку и показа других хороших игр, различные партнерские SDK и т.д. и т.п. В этом посте я расскажу, какие инструменты для этого используем в Alawar мы и наши разработчики. Возьмем как пример наши iOS-проекты.
Читать дальше →

Использование UIDynamicAnimator из UIKit Dynamics при создании таблиц на основе UICollectionView

Время на прочтение3 мин
Охват и читатели11K
Как известно в последней версии SDK (фреймворк UIKit Dynamics) разработчики могут определять динамическое поведение для UIView объектов, а также других объектов, принимающих протокол UIDynamicItem.

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

Целью было сделать анимацию, аналогичную той, что используется в приложении Messages на iOS 7:
Читать дальше →

Часть 2. Делим наш «pod» на модули. Используем чужой «pod» для разработки своего

Время на прочтение6 мин
Охват и читатели8.8K

Введение


Продолжая разрабатывать «pod» в определённый момент приходит понимание, что проект становится большим и похож на лапшу состоит из нескольких логических частей. Чем раньше приходит такое понимание, тем проще выделить различные сущности одного проекта в отдельные блоки. Например, одна часть проекта отвечает за установку соединения с сервером, другая сериализует объекты в JSON и наоборот, третья взаимодействует с UI и т.п. Каждую такую сущность можно выделить отдельным модулем, называемым «subspec» (для простоты изложения далее буду использовать слово «модуль»). Такой подход не только поможет гибче управлять разработкой «pod»'а, но так же даст пользователям вашего «pod»'а возможность использовать только нужные им модули, не захламляя свои проекты ненужным кодом.
Читать дальше →

Blur в iOS7

Время на прочтение2 мин
Охват и читатели32K
С седьмой версией iOS многие элементы UI стали выглядеть привлекательнее (см. Session 226, Implementing Engaging UI on iOS).

Например, теперь поп-оверы, большинство баров и алерты имеют размытый фон.



Что делать, если хочется добавить блюр в свой контрол, подскажет эта статья.
Читать дальше →

Вопросы на собеседование middle/senior iOS Developer

Время на прочтение4 мин
Охват и читатели130K
Все мы ходили/ходим на собеседования. Каждый раз при подготовке к очередному собеседованию просматриваем основные темы, вспоминаем вопросы, которые нам задавали в предыдущие разы, или вопросы, которые сами задавали. Ниже хочу представить основные вопросы, которые часто (основано на личном опыте) можно получить на собеседовании на должность middle/senior iOS Developer. Так сказать, шпаргалка. Заодно можно проверить свой уровень знания платформы.
Список вопросов

Часть 1. Подробная инструкция по созданию своего CocoaPod

Время на прочтение5 мин
Охват и читатели23K
Нельзя не упомянуть опубликованные ранее статьи по этой теме — введение в Cocoapods и краткое резюме по созданию своего «pod»'а.
Последняя указанная статья дала толчок в нужном направлении, но не хватало знаний для полного понимания поданной информации. Цель данной статьи — максимально подробно описать процесс создания и использования своего собственного CocoaPod'а, далее для краткости — «pod». Ну и упорядочить свои познания в данной области.
Читать дальше →

Синглтон (Перевод с английского главы «Singleton» из книги «Pro Objective-C Design Patterns for iOS» Carlo Chung)

Время на прочтение11 мин
Охват и читатели29K
В математике и логике синглтон определяется как «множество, содержащее ровно один элемент». Поэтому неважно, насколько велика сумка, каждый раз при попытке достать из неё шарик будем получать один и тот же. В каких ситуациях нужен синглтон в программировании? Подумайте о ресурсах, которые невозможно скопировать, но можно использовать совместно. Например, на iPhone установлен единственный модуль GPS и определять текущие координаты умеет только он. Класс CLLocationManager из фреймворка CoreLocation предоставляет единственную точку входа ко всем сервисам GPS-модуля. Кто-нибудь может подумать: если можно сделать копию CLLocationManager, можно ли получить дополнительный набор GPS-сервисов для своего приложения? Это звучит, как фантастика – вы создали два программных GPS по цене одного аппаратного. Но в реальности вы все равно получаете только один GPS единовременно, так как в iPhone есть только один GPS, который создает настоящие соединения со спутниками. Так что, если вы думаете, что создали супер-приложение, которое может манипулировать двумя отдельными GPS-соединениями одновременно, и хотите похвастаться этим перед друзьями, подумайте дважды.

Класс синглтона в объектно-ориентированном приложении всегда возвращает один и тот же экземпляр самого себя. Он обеспечивает глобальную точку доступа для ресурсов, которые предоставляет объект класса. Паттерн с такой функциональностью называется Синглтон.
В этой главе мы изучим возможности реализации и использования паттерна Синглтон в Objective-C и фреймворке Cocoa Touch на iOS.
Читать дальше →

Советы начинающим iOS разработчикам

Время на прочтение3 мин
Охват и читатели29K
Если не знаешь, надо не бояться, а узнавать.
Айн Рэнд “Атлант расправил плечи”



Добрый день, меня зовут Игорь Томич и я лектор курсов iOS-разработки и сооснователь онлайн курсов Master Up. Это мой первый пост в наш корпоративный блог, в котором я решил поделиться советами для начинающих iOS-разработчиков. Свое первое приложение для iOS я начал писать в начале 2009 года, а в мае 2012 году провел первый курс обучения по рарзработке под эту же платформу и к этому времени у меня скопилось достаточно “часто повторяемых ошибок” и путей их решения.
Читать дальше →

Ближайшие события

Яндекс запускает Метрику для приложений

Время на прочтение3 мин
Охват и читатели25K
Сегодня мы бесплатно открываем Метрику для приложений для всех разработчиков. Она работает с iPhone, Android, Windows Phone, Windows Store, .NET. В ней мы объединили всё, что сами хотели бы от инструмента для разработчиков приложений. Прежде всего, понятный интерфейс, в котором нет ничего лишнего, — всего за несколько кликов вы можете найти ответ на любой вопрос об аудитории ваших приложений.

image

Отчёты могут включать любую комбинацию следующих параметров: географическое положение пользователя, версия приложения, тип и версия ОС, вид устройства (планшет или смартфон), модель и производитель, разрешение экрана, язык интерфейса, сотовый оператор, тип соединения, действия и сессии пользователей.

На мобильной секции на YaC о Метрике для приложений рассказывал Александр Кочубей, менеджер этого проекта. Сегодня Саша уехал на конференцию Apps World, поэтому этот текст не от его имени, но написал его именно он. Читайте под катом подробности о том, какие данные о работе ваших приложений будут теперь вам доступны.
Читать дальше →

Dependency Injection в Objective-C с Магией и Кровью

Время на прочтение5 мин
Охват и читатели16K

Разделения на MVC недостаточно


С каждым днем iOS приложения становятся все более громоздкими, в следствие чего одного MVC становится мало.

Мы видим все больше и больше классов различного назначения: логика выносится в сервисы, модели оборачиваются декораторами, крупные представления разбиваются на более мелкие части. И самое главное, что в этом случае у нас появляется масса зависимостей, и мы должны ими как-то управлять.

Очень часто для решения проблемы зависимостей используется Singleton, по сути глобальная переменная, к которой все имеют доступ.
Как часто вам приходилось видеть подобный код?

[[RequestManager sharedInstance] loadResourcesAtPath:@"http://example.com/resources" withDelegate:self];
// или
[[DatabaseManager sharedManager] saveResource:resource];

Этот подход используется во множестве проектов, но он имеет некоторые недостатки:

  • синглтон, который используется внутри тестируемого класса, тяжело заменить на mock-объект
  • по сути синглтон это глобальная переменная
  • с точки зрения SRP объект не должен контролировать свое Singleton'овское поведение

Первую проблему решить довольно просто — нужно использовать свойства:

@interface ViewController : UIViewController

@property (nonatomic, strong) RequestManager *requestManager;

@end

Но этот подход имеет другие минусы — теперь кто-то должен «заполнить» это свойство.
Магия Крови способствует решению этой проблемы.
О том как стать адептом

Обращение за советом к экспертам и коллегам (мобильные решения)

Время на прочтение2 мин
Охват и читатели3.1K
Мы рассчитывали, что ровно месяц назад станет доступным для бета-тестинга мобильная версия "Больше чем Reader". К сожалению, наш партнёр, достаточно известная московская компания-разработчик мобильных приложений с обязательствами по срокам не справляется даже для ненативной версии. Деньги подрядчику выплачивались, техника закуплена, стойки подключены, Платформа жужжит — а вот фронт-энда нет, планы-проекты с партнерами (включая спецпроект с Хабром) заморожены, участие в запланированных мероприятиях и конкурсах сорвано.
Читать дальше →

Сетевое кэширование в iOS. Введение

Время на прочтение4 мин
Охват и читатели18K
Практически каждое мобильное приложение получает какие-либо данные из сети.
К сожалению, доступ к сети не всегда возможен и поэтому разработчику важно правильно реализовать сетевой кэш в приложении.

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

Итак, введение.
Читать дальше →

RevealApp — Firebug для iOS приложений

Время на прочтение1 мин
Охват и читатели8.2K
Два дня назад вышел RevealApp. RevealApp это MacOS приложение. Он показывает иерархию UI-компонентов приложения в понятном и мощном 3D-представлении и позволяет менять UI на лету. Идея похожа на Firebug или Web Inspector для сайтов.

Возможные применения:
— отладка UI, визуальный поиск непонятных багов в layout и тд;
— знакомство с приложением, написанным другим разработчиком, открываете Reveal и быстро анализируете структуру экранов (отображаются в том числе элементы созданные в runtime);
— дизайнеры (или разработчики под их присмотром) могут тестировать дизайн без перекомпиляции приложения (а давайте подвинем иконку выхода на три пикселя влево).

Reveal используют Flipboard, Artsy, Xamarin и другие.


Читать дальше →

Реджекты приложений в AppStore

Время на прочтение2 мин
Охват и читатели17K

Apple Review Guidelines достаточно подробны, но приложения проверяют живые люди и часто трактуют правила по разному.

Предлагаю в комментариях рассказать о ваших реджектах приложений и как вы их решили.
Под катом несколько примеров.

Читать дальше →

ARM64 и Ты

Время на прочтение10 мин
Охват и читатели84K
Несколько запоздалый перевод заинтересовавшего меня блогпоста о том, что в действительности дает 64-битность процессора в iPhone без маркетинговой шелухи. Если текст покажется вам слишком очевидным, пропустите часть «Базовые преимущества и недостатки».

Как только был анонсирован iPhone 5S, технические медия были переполнены недостоверными статьями. К сожалению, написание хороших статей занимает время, а мир технической журналистики больше ценит скорость, чем достоверность. Сегодня, по просьбе нескольких своих читателей, я кратко изложу, что дает 64-bit ARM в iPhone 5S в плане производительности, возможностей и разработки.

64 бита


Давайте для начала рассмотрим что, собственно, 64-битность означает. С этим термином связанно много путаницы, в основном из-за того, что нет единого устоявшегося определения. Однако, существует общее понимание этого термина. «Битность» обычно означает либо размер числового регистра, или размер указателя. К счастью, для большинства современных процессоров, их размер совпадает. Таким образом, 64-битность означает что процессор обладает 64-битными числовыми регистрами и 64-битными указателями.

Важно также отметить, что 64-битность не означает, т.к. и здесь есть много недопонимания. Итак, 64-битность не определяет:
Читать дальше →