Swift 6 только сочетает в себе аварий [дублировать]IOS

Программируем под IOS
Anonymous
Swift 6 только сочетает в себе аварий [дублировать]

Сообщение Anonymous »

Код: Выделить всё

@globalActor
public struct TestGlobalActor {
public actor ActorType { }
public static let shared: ActorType = ActorType()
}

final class TestCrash: XCTestCase {
let subject = CurrentValueSubject(1)

@TestGlobalActor
func testCrash() async throws {
let cancellable = subject.sink { value in
print("\(value)")
}

performSelector(inBackground: #selector(triggerSubject), with: nil) // Crashes
//perform(#selector(triggerSubject), with: nil) // Does not crash

try await Task.sleep(nanoseconds: 1000000000)

_ = cancellable
}

@objc func triggerSubject() {
subject.send(2)
}
}
  • The above code crashes in Swift 6, not Swift 5.
  • Change @TestGlobalActor to @MainActor, it still crashes
Basically in Swift 6, If a Combine signal is Отправлено из другого контекста актера, чем там, где была создана подписка, она будет сбой.
Что может быть причиной?>

Подробнее здесь: https://stackoverflow.com/questions/796 ... bine-crash

Вернуться в «IOS»