У меня есть два class
es, которые оба соответствуют одному и тому же protocol
:
class A {}
class B {}
protocol P {}
extension A: P {}
extension B: P {}
Кроме того, у меня есть закрытие обратного вызова, основным аргументом которого является переданный UnsafeMutableRawPointer
в какой-то функции C API:
SomeCFunction(…, …, { (pointerToEitherAOrB: UnsafeMutableRawPointer) in
// Cast pointerToEitherAOrB to either A or B.
})
Я не знаю, к какому из двух class
относится указатель.Будет ли еще возможно привести этот указатель к правильному типу?
Моя интуиция говорит мне, что это невозможно, и что мне нужно будет использовать super
class
.