Pull to refresh
28
0
Артем Мыльников @ajjnix

iOS Developer

Send message

Вообще, по-моему ещё в 2018 уже было или даже раньше. Точно знаю что был натив тк при мне оно было. С годами могу чуть ошибиться, но когда в 2019 уходил оно уже точно в доступе было

Оно? Не могу сам поставить тк до зимы в лучшем случае винды под рукой не будет
https://apps.microsoft.com/store/detail/яндексмузыка/9NBLGGH0CB6D?hl=ru-ru&gl=ru

На удивление, вот как раз там не электрон. Отдельно win phone разраб занимался под винду попутно с винфоном

а где связь между


выбираем лучших IT-работодателей

и


интересно посмотреть на портрет аудитории

От того что будет ясен мой портрет это как то изменит рейтинг? Или мой голос не будет засчитан если я поставлю не тот пол или возраст?


p.s. выбор лейблов это просто нечто, мне уже не интересно кого выбрали, а интересно увидеть цифры сколько отвалилось людей на этом этапе

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

Да, большое спасибо, недоглядел. Использование в таком виде allowDeferredLocationUpdates в принципе бесполезно было, по статье и коду убрал, текст дополнил.

Код писался с максимально простотой, по этому отсутствует обработка ошибок в принципе didFailWithError / didFinishDeferredUpdatesWithError (CLError.h).



Про то что allowDeferredLocationUpdates вызывается до didUpdateLocations:
Start the delivery of location updates before calling this method.

Соблюдено, CLLocationManager уже запущен. didUpdateLocations это не старт менеджера, первый вызов метода может быть и спустя пару минут, что наблюдал на практике.
Другое дело, что обычно allowDeferredLocationUpdates вызывается из didUpdateLocations, потому что в документации дальше следует:


After processing any new locations, call this method if you want to defer future updates until the distance or time criteria are met.

p.s. большое спасибо за комментарий, попутно вспомнил и поправил в статье, что я забыл о нюансах allowDeferredLocationUpdates и выпилил использование из примера ибо влиять в том использовании не должно было.
p.p.s. статью писал почти через 9 месяцев "не работы" с геолокацией, немного подзабыть успел, надеюсь никому не навредил "бесполезным" куском кода.
Начнет проигрывать файл только по требованию, просто можно указать сразу запускать или не сразу (все там же в настройках схемы).
Про скорость вот тут можно глянуть.
Provide one or more waypoints containing a latitude/longitude pair. If you provide one waypoint, Xcode will simulate that specific location. If you provide multiple waypoints, Xcode will simulate a route visitng each waypoint.

Optionally provide a time element for each waypoint. Xcode will interpolate movement at a rate of speed based on the time elapsed between each waypoint. If you do not provide a time element, then Xcode will use a fixed rate of speed. Waypoints must be sorted by time in ascending order.


Про точки и промежутки не понял вопроса, метод вызывается когда новые данные появились (обычно в массиве 1 элемент, но к примеру при использовании `defer` в массиве все точки что накопились)
сегодня оптимизацией кода разбирался тк надоело смотреть на долгую компиляцию
первым делом написан был скрипт на башике, который делал файл с тем что компилится больше 1мс (потом увеличил до 50) и выводит суммарное время сборки.
Результат ~ 32'000ms
Прошерстил 2 функции (flatMap цепочка одна фунция и убрал lazy в другом месте) и уже 20'000ms
Еще 2 функции перебрал и уже 18сек компиляция

Собственно всего то разнес во временные переменные результаты
Только в один скрипт для сабмита в стор надо дописывать фреймворки.

Не поделитесь опытом? В проекте ибо в таргет прикладывается скрипт с путями и какие нужны фреймворки. Возможно я что то делаю не так и как вы пишете можно только в одном скрипте указать фреймворки (как в pod'ах можно было указать вот эти вот на все таргеты, вот этот вот «туда», а этот «туда»)

Также при удалении не нужно ничего пересобирать

ну да, на удаление не надо пересобирать. Но надо убрать из картежфайла запись, из таргета удалить фреймворк, потом найти его в скрипте и убрать путь до него.
Конечно ситуация добавления/удаления не такая и частая, но как то смущает. Особенно когда больше 1 таргета на проекте
минусы рассказать забыли :-)
1) долгое выкачивание и сборка фреймворков когда нужно добавить/удалить что то
2) нужно руками прописывать путь к каждому фреймворку и добавлять фреймворк в проект
2.1) это нужно сделать для каждого таргета
1) MVVM не чистый у нас в любом случае (что вызывает зависть у команды winphone :D) = разделение контроллера на presenter + viewmodel
2) применяем сюда SOA
3) роутер этот, вот на этот момент я написал мелкую штуку в 50 строк (долго думал нужно ли писать статью, но решился в сб и сейчас текст статьи на проверке/правке перед релизом, увы я не мастер писать связно там крайне мелкая статья в 1.5 экрана), но она позволяет убрать навигацию в отдельный объект полностью. А использование DI повышает переиспользование и тестирование еще выше

ах да, сториборды, сейчас на моем проекте 6 сторибордов ко всему этому
На недели планировал написание о архитектуре с реактивом.
Используем очень плотно реактив (правда RAC2/RAC4 вместо RxSwift) и уже не один проект успешно живет и развивается. Пропитываем сквозь всю модульную архитектуру и нам это очень хорошо помогает разделять и лучше читать.
Ну и соотвественно за счет разделения отличная тестируемость достигается
при хорошем разделении кода, отладка на RAC не сильно сложнее чем обычный асинхронный код
наши проекты пропитаны реактивом и включение человека на проект не является неподъемной задачей
Если бы Вы ограничили статью только темой «Разбираемся с NSMethodSignature на примере комбинирования stringWithFormat и NSArray» и убрали привязку к target-action

Не поверите, было такое желание вынести центр статьи в отдельную статью с таким названием (и было так в начале кстати). Но потом люди которые читали черновой вариант изъявили желание читать все вместе чтобы не теряться в материале

Да, ломается 2х строчное решение
Но это все равно меньше пары классов и статьи на пару А4. А по сути всего один метод у UIButton

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

Здесь решение максимально общее и по факту совсем не большое если сравнивать от эффекта добавления множества категорий

1) target-action ни есть задача о performSelector:withObject:

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

так же интересно, какое неверное представление я дал о блоках?
p.s. а я и не думал обижаться :-) это про "не злой"
Потому что намного приятнее работать только с тем, что нужно

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

и это действительно было увлекательное занятие и я думаю все объясняет ;-)
К тому же адаптация кол-ва аргументов тоже весьма приятно
Автор пишет, что можно выбрать другую библиотеку для замены основы под iOS.
Да и если это работает, пусть и не под iOS, тогда вопрос, может все таки можно без NSObject и dynamic? Почему бы не раскопать эту тему, вместо того чтобы просто написать «вот так можно, это логично и просто и все тут», это будет намного интереснее и полезнее. О этой либе упоминается как раз в приведенном вами источнике
Получается в Swift можно использовать swizzling, только если для этого разработчики сами приложат усилия? Практически бесполезно получается ((
Кстати, а что по поводу SWRoute? Запустить у себя не получилось, видимо не совместимо с последней версией, но люди поставили звезды, возможно у них получилось, не пробовали разобраться с новой версией языка?
И внутрь фрэймворка лезть нам тоже очень не хочется, потому что время от времени выходят его обновления и лишаться их — жалко.

а если класс не наследник NSObject?
ну или хотя б метод не dynamic?

тогда только лезть? часто ли пишете такие условия сами?
1

Information

Rating
Does not participate
Date of birth
Registered
Activity