Итак, я работал над частным фреймворком, в котором используется камера (поэтому этот фреймворк протестирован с устройством), и решил использовать некоторое KVO. я установил минимальную версию iOS в моем проекте равную 9.
, когда я пытался интегрировать его с большим проектом, он отлично работает с устройством iPhone 8 или выше и iOS 12 или выше ,
Но когда проект выпущен для публикации c, у меня возникают сбои:
Fatal error: could not demangle keypath type from '10QRIScannerAAC': file /BuildRoot/Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-1001.0.82.4/swift/stdlib/public/core/KeyPath.swift, line 2611
это след от аварийных сбоев, и у меня нет указанного устройства c для расследования сам по себе
трассировка стека скрыта, потому что проект запутан
отчет cra sh показывает, что он происходит только на iphone 5 с ios 10.3.4 установленным
код, который использовал KVO:
class ScannerVideoCapture: NSObject {
@objc dynamic var metaDataStringValues: [String] = []
//Some logic that modify metaDataStringValues.....
}
public final class Scanner: NSObject {
@objc dynamic private var scannerVideoCapture: ScannerVideoCapture
private var scannerValueObserver: NSKeyValueObservation?
// Initialization, setups, etc.......
//MARK: Private Functions
private func registerLocalNotification() {
scannerValueObserver = observe(\.scannerVideoCapture.metaDataStringValues,
options: [.new], changeHandler: {[weak self] object, change in
guard let dataValues = change.newValue else {
return
}
self?.delegate?.didReceiveDataFromCapture(urlStrings: dataValues)
})
}
}
Итак, iOS неисправен? или это iPhone 5 в спецификации c? или моя реализация просто неверна?