Why does the type not conform to protocol?
<p>Let's have the following piece of code:</p>

<pre><code>protocol ItemView {

    var image: UIImage? { get set }
}

 class BaseController&lt;T: UIView where T: ItemView&gt;: UIViewController {

    var itemView = T()
}

class ConcreteItemController: BaseController&lt;UIImageView&gt; {

}
</code></pre>

<p>For the BaseController I am getting an error message saying "Type "UIImageView" does not conform to protocol "ItemView"".</p>

<p>But why?</p>

<p>Same error message shows up when I do this instead:</p>

<pre><code> typealias ConcreteItemController = BaseController&lt;UIImageView&gt; 
</code></pre>

<p>I am really missing something here...why would the UIImageView not conform to ItemView protocol? It HAS an optional image property..so where's the problem?</p>