Ненавижу доставлять вам неудобства, но у нас есть ошибка в бета-версиях 7.3, из-за которой мы неправильно скомпилируем каррирование Signal.combineLatestWith
здесь:
public func combineLatestWith<U>(otherProducer: SignalProducer<U, Error>) -> SignalProducer<(Value, U), Error> {
return liftRight(Signal.combineLatestWith)(otherProducer)
}
Я ищу решение прямо сейчас. Если мы не исправим это вовремя для финальной версии 7.3, я рекомендую вручную вставить здесь комбинатор liftRight
в качестве обходного пути,
public func combineLatestWith<U>(otherProducer: SignalProducer<U, Error>) -> SignalProducer<(Value, U), Error> {
return SignalProducer { observer, outerDisposable in
self.startWithSignal { signal, disposable in
outerDisposable.addDisposable(disposable)
otherProducer.startWithSignal { otherSignal, otherDisposable in
outerDisposable.addDisposable(otherDisposable)
signal.combineLatestWith(otherSignal).observe(observer)
}
}
}
}
Ошибка с нашей стороны - это rdar: // проблема / 24960559 , для справки.
Я даже не могу выразить, насколько я рад видеть, как участник Swift открывает проблему, не только объясняющую ошибку, но и предлагающую обходной путь: heart_eyes:
Если это не исправлено GM, мы можем временно внести это изменение в # 2684, так как нам, вероятно, все равно придется изменить другие вещи для Swift 2.2
.
Большое спасибо @jckarter : smile:
Я даже не могу выразить, насколько я рад видеть, что участник Swift открывает проблему, не только объясняя ошибку, но и предлагая обходной путь.
Да! Спасибо!!! : heart_eyes:
@jckarter Есть ли проблема на bugs.swift.org, за которой мы тоже можем следить?
Не то, что я знаю из. К сожалению, радар содержит частный проект, который я не могу опубликовать публично.
@calebd сообщает, что это все еще проблема с финальной
Заканчиваю закачку. Я сделаю ветку с изменениями Swift 2.2
(возможно, включая этот _надежно_ временный обходной путь) и попытаюсь выпустить релиз с помощью EOD сегодня.
Подтверждено, это вылетает при запуске тестов с -O
. Я добавил обходной путь в # 2760: 6f63eb6569772a90f0b4358acb33b93a4f8105b2.
Исправлено # 2760.
Давайте оставим это открытым, чтобы не забыть избавиться от обходного пути, как только это будет исправлено в Swift :)
@jckarter Есть идеи, будет ли это исправлено в вехе 2.2.x ?
Мы хотя бы попробуем. Мы изучаем это.
Похоже, у @eeckstein есть исправление: https://github.com/apple/swift/pull/1916
Кажется, что это исправлено https://github.com/apple/swift/pull/1937, а Xcode 7.3.1 / Swift 2.2.1 содержит исправление.
https://github.com/apple/swift/releases/tag/swift-2.2.1-RELEASE
Для Swift 3 устранены обходные пути!