Подводим итоги очередной недели мобильным дайджестом. В нем мы рассказываем про разработку прибыльной игры школьниками, про iOS-релизы в Badoo, про новые правила App Store и победителей Google Play, иллюзии скорости и движения, анонимность и многое другое.
Рубрика «swift» - 31
Дайджест интересных материалов для мобильного разработчика #223 (25 сентября — 1 октября)
2017-10-01 в 13:16, admin, рубрики: App Store, arkit, badoo, Google Play, swift, ux дизайн, xcode 9, Блог компании Everyday Tools, маркетинг мобильных приложений, разработка игр, разработка мобильных приложений, Разработка под android, разработка под iOSОпционалы в Swift
2017-09-28 в 16:53, admin, рубрики: swift, swift разработка, Программирование, разработка мобильных приложений, разработка под iOSНесмотря на некоторый опыт в мобильной разработке (в том числе с применением Swift), регулярно на почве свифтовых опционалов возникали ситуации, когда я знал что нужно делать, но не совсем внятно представлял, почему именно так. Приходилось отвлекаться и углубляться в документацию — количество "заметок на полях" пополнялось с удручающей периодичностью. В определенный момент они достигли критической массы, и я решил упорядочить их в едином исчерпывающем руководстве. Материал получился довольно объемным, поскольку предпринята попытка раскрыть тему максимально подробно. Статья будет полезна как начинающим Swift-разработчикам, так и матерым профессионалам из мира Objective-C — есть ненулевая вероятность, что и последние найдут для себя что-то новое. А если не найдут, то добавят свое новое в комментарии, и всем будет польза.
CGLayout — новая система автоматического layout’а в iOS
2017-09-23 в 0:42, admin, рубрики: autolayout, calayer, cglayout, iOS, layout, open source, swift, uikit, uiview, разработка мобильных приложений, разработка под iOSПривет!
Хочу представить мою последнюю open-source разработку — CGLayout
— вторая система разметки в iOS после Autolayout, основанная на ограничениях.
"Очередная система автолайаута… Зачем? Для чего?" — наверняка подумали вы.
Действительно iOS сообществом создано уже немало layout-библиотек, но ни одна так и не стала по-настоящему массовой альтернативой ручному layout`у, не говоря уже про Autolayout.
CGLayout
работает с абстрактными сущностями, что позволяет одновременно использовать UIView, CALayer и not rendered
объекты для построения разметки. Также имеет единое координатное пространство, что позволяет строить зависимости между элементами, находящимися на разных уровнях иерархии. Умеет работать в background потоке, легко кешируется, легко расширяется и многое-многое другое.
CGLayout
функциональный продукт, у которого есть хорошие перспективы развиться в большой проект.
Абстракция сетевого слоя с применением «стратегий»
2017-09-21 в 19:51, admin, рубрики: alamofire, DRY, iOS, moya, RxSwift, solid, srp, swift, xcode, разработка под iOSОт всех моих предыдущих реализаций сетевого слоя осталось впечатление, что есть еще куда расти. Данная публикация ставит целью привести один из вариантов архитектурного решения по построению сетевого слоя приложения. Речь пойдет не об очередном способе использования очередного сетевого фреймворка.
Часть 1. Взгляд на существующие подходы
Для начала из публикации 21 Amazing Open Source iOS Apps Written in Swift взято приложение Artsy. В нем используется популярный фреймворк Moya, на базе которого и построен весь сетевой слой. Отмечу ряд основных недостатков, которые встретил в данном проекте и часто встречаю в других приложениях и публикациях.
Когда размер имеет значение: создаем приложение-линейку с помощью ARKit
2017-09-13 в 11:01, admin, рубрики: apple, AR, arkit, ios 11, SDK, swift, xcode, xcode 9, Блог компании Everyday Tools, линейка, Разработка под AR и VR, разработка под iOS
Вот и прошел день долгожданного официального релиза iOS 11, а значит откладывать знакомство с ARKit – SDK производства Apple для создания приложений с дополненной реальностью — больше никак нельзя. О сути инструмента наслышаны многие: с помощью ARKit можно накладывать созданную виртуальную реальность на реальный мир вокруг нас. iPhone или iPad при этом выступают в роли смотрового окна, через которое мы можем наблюдать за происходящим и что-то в нем менять. В Интернете уже представлено немало различных демо-приложений – с их помощью можно расставлять мебель, парковать автомобиль на стоянке, рисовать в окружающем пространстве, создавать двери в другие миры и многое другое. Словом, круг возможностей широкий, нужно только разобраться с технической реализацией.
Читать полностью »
По итогам Rambler.iOS #9
2017-09-05 в 14:45, admin, рубрики: iOS, iOS разработка, out of memory error, rambler.ios, Rambler&Co, swift, swift server side, Блог компании Rambler&Co, разработка мобильных приложений, разработка под iOS, статический анализ кода
Вот и лето прошло, словно и не бывало и голодные до знаний разработчики потянулись в школу, университет или на онлайн-курсы. Для них, а также для всех, интересующихся iOS-разработкой, мы подготовили отчет о митапе Rambler.iOS, который был анонсирован ранее.
RxSwift: немного о share(), replay(), shareReplayLatestWhileConnected() и других классных операторах
2017-09-02 в 11:09, admin, рубрики: functional programming, reactive programming, RxSwift, swift, Программирование, разработка под iOS, Разработка под OS X, функциональное программированиеЯ уже писал про Publish, Connect и RefCount в RxSwift. Для того, чтобы лучше раскрыть тему, представляю вашему вниманию перевод другой замечательной статьи, про различия между такими операторами, как share(), replay(), replayAll(), shareReplay(), publish() и shareReplayLatestWhileConnected().
Частая ошибка, которую совершают новички, взявшиеся за освоение Rx — это непонимание того, что цепочка операторов на Observable выполняется заново с каждым новым подписчиком:
let results = query.rx.text
.flatMapLatest { query in
networkRequestAPI(query)
}
results.subscribe(...) // один запрос в сеть
results.subscribe(...) // другой запрос
Мы имеем несколько подписчиков на один-единственный Observable, но мы не хотим, чтобы его код исполнялся с каждым новым Subscriber'ом. Для этого в RxSwift имеется несколько операторов. Вот резюмирующая табличка, описывающая каждый из них:
1 — ретранслирует произведенных до подписки элементов не больше, чем bufferSize.
2 — ретранслирует 1 элемент, произведенный до подписки, до тех пор, пока существует хотя бы один подписчик.
Читать полностью »
Недоработка форматирования блоков Swift в Xcode
2017-09-01 в 16:58, admin, рубрики: ios development, swift, разработка под iOSДумаю, все мы, кто пишет на Swift хоть изредка, пользовались такой конструкцией языка как блоки. Но есть один нюанс с этими блоками, который сильно раздражает: в Xcode не совсем корректно работает форматирование кода по отношению к ним, а точнее — страдают отступы.
Страдают в том случае, если блок многострочный и указан как один из параметров при вызове метода, а форматирование кода — построчное, то есть, параметр указан на отдельной строке.
Читать полностью »
Об операторах Publish, Connect, RefCount и Share в RxSwift
2017-08-29 в 12:37, admin, рубрики: RxSwift, swift, Программирование, реактивное программированиеПривет! Представляю вашему вниманию перевод статьи Understanding Publish, Connect, RefCount and Share in RxSwift.
Примечание переводчика.
В оригинале статьи используется Swift второй версии и соответствующая версия RxSwift. Я имел смелость переписать приведенные ниже куски кода под Swift 3.
Так же хочется отметить, что такие понятия, как Observable и Sequence, можно считать одним и тем же. То же касается Observer и Subscriber.
В этой статье я постараюсь объяснить такие операторы для работы с Connectable Observable в RxSwift, как publish, connect, refCount
и share
. Они используются вместе в различных комбинациях. Очень важно понимать разницу между:
publish().connect()
- и
publish().refcount()
(или простоshare()
)
Активные и пассивные Observables
Прежде чем перейти к сути, мне хотелось бы сказать пару слов о hot и cold Observables. Как по мне, так понятия горячих и холодных Observables немного размыты.
Давайте горячий Observable мы будем называть Active Sequence, а холодный Passive Sequence.
- Active Sequence эмитит элементы постоянно, независимо от того, подписан на нее кто-нибудь или нет
- Passive Sequence начинает эмитить элементы по запросу
Примером Passive Sequence может служить запрос в сеть, который начинается только тогда, когда мы подписались на последовательность. Примерами Active Sequence могут служить web-socket соединение, события таймера или текст, производимый UITextField
'ом.
И это все. Думайте об активных и пассивных последовательностях. Понятия горячих/холодных/теплых/прохладных Observables слишком запутанны и могут сбить с толку.
Читать полностью »
Проверка внедрения зависимостей на Swift
2017-08-28 в 15:34, admin, рубрики: dependency injection, swift, tinkoff, Блог компании Tinkoff.ru
Проект с Dependency Injection похож на елочную гирлянду — он красив, радует детей и взрослых. Но если где-то не внедрить зависимость, отключится целый сегмент приложения. И, чтобы найти источник проблем, придется проверять все зависимости в этом сегменте.
В этой статье описаны несколько вариантов поиска пустых зависимостей. А в нашем репозитории есть небольшая библиотека, которая поможет в этом: TinkoffCreditSystems/InjectionsCheck