После большой боли я обнаружил, что 4-месячная версия приложения прекрасно компилируется. Таким образом, я сделал git bisect
и нашел ошибочный коммит, а затем этот код:
struct Config: Equatable {
let formatDescription: CMFormatDescription
let orientation: CGImagePropertyOrientation
}
Оказывается, CMFormatDescription
стал Equatable
только в iOS 13, в то время как целью развертывания приложения является iOS 11. Вероятно, он вернулся к [NSObject isEqual:]
в Xcode 10, но в Xcode 11 усложнился. Поскольку Swift автоматически генерирует соответствие Equatable
под капотом, у него возникли проблемы с указанием точного места ошибки. Решение состоит в том, чтобы добавить собственную реализацию Equatable
для CMFormatDescription
:
extension CMFormatDescription: Equatable {
public static func == (lhs: CMFormatDescription, rhs: CMFormatDescription) -> Bool {
return CMFormatDescriptionEqual(lhs, otherFormatDescription: rhs)
}
}