Рубрика «ios development» - 22

Что должен знать objc разработчик на уровень middle/senior?
К сожалению, четкой черты на вертикальное развитие нет. Парадокс, но чтобы знать что изучить, нужно знать что ты не знаешь.
Я постарался вспомнить самые интересные вопросы, которые мне задавали самому на различных собеседованиях, а так же расширил их множеством вопросов(тем же уровнем) от себя.
Здесь нет общих вопросов вроде: IoC, design patterns, S.O.L.I.D. и т.п.

ВНИМАНИЕ!!!
Помимо вертикального развития немаловажно и горизонтальное

ВНИМАНИЕ!!! (2)
Не пишите в комментарии ответы на вопросы, это дает возможность людям самостоятельно разобраться.
Однако, если у вас имеются интересные вопросы по теме, я с радостью добавлю их в список.

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

Начинаем

Читать полностью »

В компании Mutual Mobile тестирование является частью создания отличного программного обеспечения. Однако тестирование не всегда было ключевой частью при создании приложений под iOS. Когда мы начали искать способы, чтобы улучшить тестирование наших приложений, то обнаружили, что написание тестов для приложений это довольно сложно. И решили, что если мы собираемся улучшить способ тестирования программного обеспечение, то мы должны сначала придумать лучший способ спроектировать приложения, и это решение мы назвали VIPER.

Традиционным способом проектирования приложения под iOS является использование шаблона MVC (модель-представление-контроллер). Использование MVC для архитектуры приложения, может натолкнуть Вас на мысль, что каждый класс представляет собой или модель, или представление, или контроллер. Поскольку значительная часть логики приложения не входит в модель или представление, она обычно оказывается в контроллере. Это приводит к проблеме, известной как Massive View Controllers, где контроллеры в конечном итоге делают слишком много. Если вся логика встроена в контроллер представления, это приводит к тестированию логики через UI, в свою очередь это является неправильным способом проектированиям логики. Также проще совмещать бизнес-логику и UI код в том же методе. Когда Вам будет нужно добавить новые функциональные возможности или исправить ошибку, то будет трудно определить, где внести изменение и при этом быть уверенным, что не будет непредсказуемых последствий в другом месте.

Введение в VIPER - 1
Читать полностью »

Существует бесчисленное множество статей относительно шаблона MVVM в iOS, но немного о RxSwift, и мало кто акцентирует внимание на том, как выглядит паттерн MVVM на практике и как его реализовать.

ReactiveX

ReactiveX — библиотека для создания асинхронных и основанных на событии программ при помощи наблюдаемой последовательности.  — reactivex.io

RxSwift — относительно молодой фреймворк, который позволяет "реактивно программировать". Если Вы ничего о нем не знаете, тогда наведите справки, потому что функциональное реактивное программирование (FRP) набирает обороты, и не собирается останавливаться.
Читать полностью »

Чтобы преуспевать в своем деле, разработчикам важно быть в курсе последних нововведений. За неделю накапливается несколько десятков полезных статей, видео-лекций и записей в блогах гуру iOS-разработки — только и успевай отслеживать! Чтобы в цейтноте вы не пропустили ничего важного, мы создали MBLTdev Digest, который работает уже 21 неделю.

Подписывайтесь на email рассылку, push notifications для Safari или RSS. Под катом — выпуск этой недели.

Интересное для iOS-разработчиков за неделю - 1

Читать полностью »

Эта публикация является конспектом соответствующего раздела замечательной книги «iOS 8 Programming Fundamentals with Swift» Matt Neuburg, O'Reilly, 2015. Статья, описывающая использование анонимных функций, может быть интересной новичкам или пригодится как шпаргалка для более продвинутых разработчиков.

Рассмотрим пример:

	func whatToAnimate() {//self.myButton является кнопкой в интерфейсе
		Self.myButton.frame.origin.y += 20
	}
	func whatToDoLater(finished:Bool) {
		printLn(“finished: (finished)”)
	}
	UIView.animateWithDuration(
		0.4, animations: whatToAnimate, completion: whatToDoLater)

В этом участке кода есть некоторая странность. Я объявляю функции whatToAnimate и whatToDoLater только для того, чтобы передать эти функции на следующую строку кода. И действительно, имена этих функций мне больше ни для чего не нужны – ни имена, ни эти функции больше никогда не будут повторно использованы. Было бы хорошо передавать только тела этих функций, без необходимости декларации их имен.

Такие функции называются анонимными, они имеют право на существование и часто используются в Swift.
Читать полностью »

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

Как создать мощную систему игровых достижений - 1

Хотя игровые достижения не должны быть основной целью в вашей игре, это не мешает им существенно влиять на поведение игрока и его вовлеченность. Давным-давно, на одном из крупных проектов передо мной поставили масштабную задачу: создать мощную систему игровых достижений. В течении следующих 30 месяцев, я, как раб на галерах, провел за проектированием и тестированием различных систем достижений в сотнях игр. Меня поглотила бесконечная обработка данных: игровых комментариев, постов на форумах, непосредственное общение с игроками, изменения в игровых рейтингах. Я совершил и продолжаю совершать кучу ошибок, но я также усвоил несколько бесценных уроков. И эти знания нельзя держать в секрете…
Читать полностью »

Все ошибки по данной статье присылайте, пожалуйста, в личные сообщения.
Алгоритмы интеллектуальной автогенерации уровней в iOS игре - 1
Я люблю смотреть на звездное небо и размышлять о далеких мирах, но факт бесконечности вселенной с трудом укладывается в моей голове. Согласно теории большого взрыва, наша вселенная непрерывно расширяется и охлаждается из сингулярного состояния, но давайте предположим, что наша бесконечная вселенная постоянно генерируется по определенным правилам, и количество этих правил ограниченно. Можно допустить, что наша вселенная уже сгенерировалась, то есть для каждой точки бесконечной вселенной уже была произведена генерация по конечному числу правил (генерация была произведена бесконечное количество раз), в итоге мы имеем бесконечную сгенерированную вселенную.

Вернемся к нашей задаче, нам нужно интеллектуально генерировать карты для IPhone/IPad игры типа «Марио», для начала мы рассмотрим генерацию карты в пределах поля 128х128 кубов.
Читать полностью »

Задача распознавания этикеток имеет большое практическое значение. Ведь ее решение может существенно упростить работу с товарами в магазинах, начиная от мерчандайзинга и заканчивая непосредственно продажей конечному покупателю. Однако, по причине слабой формализации самой задачи и большой вариативности потенциальных объектов распознавания, универсальной технологии распознавания этикеток в настоящее время не существует. А торговые предприятия, понимая высокую коммерческую ценность подобной автоматизации, используют различные обходные пути (например, приклеивают к товарам 1D- или 2D-штрихкоды).

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


Читать полностью »

Решение, изложенное в статье, расписано для пользователей OSX. Но его достаточно просто можно адаптировать и под другие популярные операционные системы.

Началось все с нетривиальной задачи: когда создается веб-сервис и мобильное приложение, неизбежно возникает потребность сделать под него презентабельную или не очень презентабельную иконку. Но стоит начать создание приложения для IOS в XCode, как тут же узнаешь, что от тебя требуется не одна иконка, а примерно десяток, причем разных размеров. Вот только часть из них:

  • иконка для отображения на вкладках браузеров;
  • иконка веб-приложения, отображаемая в safari mobile;
  • иконка мобильного приложения, отображаемая на главном экране в ios;
  • большая иконка для app store;
  • маленька иконка для app store;
  • иконка для поиска в spotlight.

А теперь внимание: практически для каждого пункта из этого списка есть еще и свои собственные размеры — в зависимости от типа устройства и версии iOS. Подробная спецификация иконок для веб-приложения и приложения для ios находится здесь.
Читать полностью »

Стилизация iOS-приложений: как мы натягиваем шрифты, цвета и изображения - 1

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js