Когда я запускаю следующий код (упрощенный пример, созданный для демонстрации сбоя), он выполняется, как и ожидалось, когда я выбираю «Выполнить» (оба сообщения os_log печатаются в консоли).
Однако, когда я открываю его в «Инструментах» из навигатора отладки памяти, нажав «Перезагрузить», он вылетает (в консоли печатается только первое сообщение os_log).
Сбой происходит при наблюдении(...).
import os
import UIKit
class ObserverCrashingExample: NSObject {
@objc private var animation: UIViewPropertyAnimator?
private var observer: NSKeyValueObservation?
override init() {
super.init()
animation = UIViewPropertyAnimator( duration: 1, curve: .linear, animations: { })
animation!.pauseAnimation()
os_log("X_AMPLE Executes")
observer = animation!.observe(\.isRunning, options: [.new, .old]) { _ , _ in }
os_log("X_AMPLE Does not execute")
}
required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") }
}
Я использую Xcode 9.3, Swift 4.1, цель развертывания iOS 11.3.
Есть идеи? Это проблема компилятора?
Ваше здоровье