не будет компилироваться. Все, что мне нужно, это понять, почему меня заставляют читать, даже если у протокола есть такое ограничение.

я есть следующий код:

import UIKit

protocol Fooable: class where Self: UIViewController {
    func foo()
}

class SampleViewController: UIViewController, Fooable {

    func foo() {
        print("foo")
    }
}

let vc1: Fooable = SampleViewController()
let vc2: Fooable = SampleViewController()


// vc1.show(vc2, sender: nil) - error: Value of type 'Fooable' has no member 'show'

// (vc1 as! UIViewController).show(vc2, sender: nil) - error: Cannot convert value of type 'Fooable' to expected argument type 'UIViewController'

(vc1 as! UIViewController).show((vc2 as! UIViewController), sender: nil)

закомментированные строки не компилируются.

Почему я вынужден привести объект типа протокола кUIViewController даже еслиFooable Протокол требует, чтобы типы, которые соответствуют ему, наследовали отUIViewController?

Ответы на вопрос(5)

Ваш ответ на вопрос