У меня есть функция, подобная приведенной ниже:
func fetchComment(postId: String, index: Int, callback: @escaping (_ comment: Comment) -> Void) {
rtDB!.fetchComment(postId: postId, callback: { comment in
self.log.debug("postId: \(postId) - comment: \(comment)")
self.fetchUsersForComments([postId: comment], callback: { usersList in
// self.log.debug("++++ postId: \(postId) - comment: \(comment)") // 1
self.log.debug("postId: \(postId) - usersList: \(usersList)")
})
})
}
Если я добавлю точку останова на 1
с этой закомментированной строкой и выведу p comment
, я получу сообщение с неопределенным идентификатором comment
.Но comment
передается как аргумент закрытия в метод fetchComment
.Однако, если я раскомментирую строку, помеченную 1
, которая использует переменную comment
, а затем выведу p comment
с точкой останова, она будет работать нормально.Почему переменная comment
не определена, если она не используется во внутренней области видимости?Компилятор Swift выполняет оптимизацию и удаляет переменную?У меня не включена оптимизация для отладки.