Не могли бы вы объяснить, как в этом случае происходит кастинг Keys.key во ViewType? Или это просто заглушка для Keys.key, а type задается уже в целевом контроллере?
Скрытый текст
extension UIViewController {
enum ViewType {
case undefined
case navigation
case transport
...
}
private struct Keys {
static var key = "\(#file)+\(#line)"
}
var type: ViewType {
get {
return objc_getAssociatedObject(self, &Keys.key) as? ViewType ?? .undefined
}
set {
objc_setAssociatedObject(self, &Keys.key, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
}
}
НИКОГДА НЕ вызывайте метод sync на main queue, потому что это приведет к взаимной блокировке (deadlock) вашего приложения!
Не совсем понял, про какой случай речь? Нельзя вообще вызывать конструкцию DispatchQueue.main.sync?
Если же речь идет о вызове DispatchQueue.main.sync в Main Thread, то это относится ко всем задачам, выполняемым в одной и той же очереди (Dispatch Queues and Thread Safety):
Do not call the dispatch_sync function from a task that is executing on the same queue that you pass to your function call. Doing so will deadlock the queue. If you need to dispatch to the current queue, do so asynchronously using the dispatch_async function.
Думается, никто и не тратил большую часть средств на разработку, приложение действительно простое. А вот на маркетинг, освоение рынка (первичная заниженная стоимость), выплаты таксистам (средний ценник по рынку) — уже да.
В iOS вполне юзабельно, выбор через пикер обходится в пару-тройку свайпов (скроллов), — что по расходам сопоставимо с вводом значений напрямую. Тут реализация похожая, также со свайпами.
Интересный вопрос хочется задать всем тем, кто яро защищает университеты и текущий строй образования. Все подобные холиварщики похожи на то, как истукан-дембель возвращается из армии, объявляя, что годы прошли не зря.
В информационную эпоху университеты являются рудиментом, КПД слишком мал. Будучи студентом технического университета я не получаю знаний, под школьным впечатлением я ожидал большего от высшего образования.
Так чему же учат в университетах? Жизни-ловкости-гибкости, то есть всему, кроме знаний?
Ну и стоит учесть, что все примеры из главной очереди запускаются.
Не совсем понял, про какой случай речь? Нельзя вообще вызывать конструкцию DispatchQueue.main.sync?
Если же речь идет о вызове DispatchQueue.main.sync в Main Thread, то это относится ко всем задачам, выполняемым в одной и той же очереди (Dispatch Queues and Thread Safety):
То есть следующий код вызовет deadlock:
При этом следующий кусок кода имеет право на достойное выполнение. Или я ошибаюсь?
За статью огромное спасибо, must have. Теперь жду про Operation :)
А как насчет такой конструкции (вместо той, что выше)?
А что за «пирамиды сметри»? Ничего не нагуглил по этому термину.
UINavigationController при работе с контроллерами представляет собой стек, отсюда и приставки push/pop.
Спасибо, статья хорошая.
Достаточно указать левый/правый вид меню и слайдер готов.
В информационную эпоху университеты являются рудиментом, КПД слишком мал. Будучи студентом технического университета я не получаю знаний, под школьным впечатлением я ожидал большего от высшего образования.
Так чему же учат в университетах? Жизни-ловкости-гибкости, то есть всему, кроме знаний?