Я столкнулся с очень странным вопросом о переменных LLDB, изменяющих - PullRequest
0 голосов
/ 25 февраля 2020

Я установил точку останова в строке 29 и хочу изменить значение через LLDB, чтобы он мог войти в ситуацию == 1, но я обнаружил, что эта точка останова перешла на строку 33 без попадания в нее, что очень странно.

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let v = UIView.init(frame: CGRect(x: 100, y: 100, width: 300, height: 300))
        v.backgroundColor = .yellow
        view.addSubview(v)
    }


    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

        let value = test()
        print(value)
    }

    func test() -> Bool {
        let m = 3
   29     if m == 1 {
            print(m)
            return true
        } else {
   33        print(m)
            return false
        }
    }
}

Если точка останова достигла 29, но точка останова переместилась на строку 33 без нажатия

Когда я устанавливаю значение m в случайное число, точка останова может оставайтесь в строке 29, и значение можно изменить, чтобы он перешел в другое состояние, что очень смущает меня

   func test() -> Bool {
        let m = arc4random()
        if m == 1 {
            print(m)
            return true
        } else {
            print(m)
            return false
        }
    }

1 Ответ

2 голосов
/ 25 февраля 2020

Странно, что вы не заметили следующее предупреждение

enter image description here

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

...