Быстрая охрана с собой
Я исполняю слабый сильный танец по-быстрому:
dispatch_async(dispatch_get_global_queue(QOS_CLASS_DEFAULT, 0), { [weak self] in
guard let `self` = self else {
return
}
self.doSomething(1)
})
До этого я использовал strongSelf
вместо "я". На сайте я видел, что могу использовать этот символ `.
Но что этот персонаж делает в Swift? Без этого я не могу назначить себя. Почему это работает? Это хорошая практика, чтобы использовать его?
2 ответа
Представляет записку, в которой говорится следующее:
Если вам нужно присвоить константе или переменной то же имя, что и зарезервированному ключевому слову Swift, заключите его в кавычки (`) при использовании его в качестве имени. Однако избегайте использования ключевых слов в качестве имен, если у вас нет абсолютно никакого выбора.
РЕДАКТИРОВАТЬ:
Я делаю это, используя любое другое имя, например strongSelf
как и раньше. Потому что, в конце концов, и "я", и strongSelf
будет некоторая переменная, чтобы действовать на. Поэтому я предлагаю, если мы можем использовать другое имя переменной, которое хорошо.
Немного обновления (я не буду ссылаться здесь, когда использовать его, а скорее как).
С Swift 4.2 использование должно быть таким:
guard let self = self else { return }
С помощью `
в основном основан на ошибке компилятора, поэтому не рекомендуется.
Для получения дополнительной информации нет лучшего источника, чем этот. Объясняя все причины и другие соображения.
Короче говоря, вышесказанное более согласуется с другими случаями в коде:
if let myVariable = myVariable
Так что не создает путаницы / расхождений.