Я думаю, что все мы, кто пишет Быстрый по крайней мере, изредка они использовали такую языковую структуру, как блоки.
Но есть с этими блоками один нюанс, который очень раздражает: в Xcode форматирование кода по отношению к ним работает не совсем корректно, точнее, страдает отступ.
Они страдают, если блок многострочный и указан как один из параметров при вызове метода, а форматирование кода построчное, то есть параметр указывается на отдельной строке.
В данном случае хорошо работает самое простое и типичное форматирование:
Но как только выносишь указание параметра на отдельную строку, начинается дискотека:DispatchQueue.main.async { // ok } DispatchQueue.main.async(execute: { // ok })
DispatchQueue.main.async(
execute: {
// wrong
}
)
Однако если добавить захват, то все работает нормально:
DispatchQueue.main.async(
execute: { [weak self] in
// ok
}
)
DispatchQueue.main.async(
execute: { [unowned self] in
// ok
}
)
Я написал в Apple о проблеме, и вроде они о ней давно знают. Здесь мне приходится использовать захват только для того, чтобы сохранить форматирование.
К сожалению, кроме решения основной проблемы, этот метод порождает еще одну проблему – предупреждения что себя не используется внутри блока.
Но лично мне с таким проще смириться предупреждения чем наблюдать сломанные углубления.
Если кто-то не знал и кому-то заметка будет полезна, то хорошо.
Если кто-нибудь знает, как описанную проблему можно решить более кратко, буду рад узнать.
Теги: #разработка для iOS #Swift #разработка для iOS #Swift
-
Cyanogen Привлек $80 Млн Инвестиций
19 Oct, 24 -
Вяз. Удобно И Неловко. Http, Задача
19 Oct, 24 -
Xmlhack.ru Закрыт Уже Почти Год
19 Oct, 24 -
Нужна Помощь В Восстановлении Винта.
19 Oct, 24