title: Declaring conformance to @objc protocol in empty extension breaks with EXC_BAD_INSTRUCTION
body: <p>Been having lots and lots of trouble with Swift protocols in combination with arrays, but I couldn't even reproduce my whole problem before things started to break in playground. Here's a minimal example.</p>
  
  <p>I have two protocols and a class <code>Bus</code> which declares conformance to one of the protocols. In addition, an empty extension of <code>Bus</code> declares conformance to the other protocol:</p>
  
  <pre><code>import Foundation
  
  @objc
  protocol Displayable { var name: String {get} }
  
  @objc
  protocol Utterable { var utterance: String {get} }
  
  class Bus : Displayable { var name = "a bus"; var utterance = "this is a bus"}
  
  extension Bus : Utterable {}
  
  var bus1 = Bus() // this line fails with EXC_BAD_INSTRUCTION
  </code></pre>
  
  <p>The console output may look random but it's not. I get it consistently if I try to create an instance of <code>Bus</code>:</p>
  
  <pre><code>objc[9658]: Method cache corrupted. This may be a message to an invalid object, or a memory error somewhere else.
  objc[9658]: unused 0x0, SEL 0x10e4ce130, isa 0x1181f9ad0, cache 0x1181f9ae0, buckets 0x7fc491501060, mask 0x0, occupied 0x0
  objc[9658]: unused 0 bytes, buckets 64 bytes
  objc[9658]: selector 'resolveInstanceMethod:'
  objc[9658]: isa '__lldb_expr_1314.Bus'
  objc[9658]: Method cache corrupted.
  </code></pre>
  
  <ul>
  <li>The error goes away if we comment out all <code>@objc</code> attributes</li>
  <li>The error goes away if we don't conform to <code>Utterable</code>: <code>extension Bus</code><strike><code>: Utterable</code></strike><code>{}</code></li>
  </ul>
  
  <p>The reason why my protocols <em>must</em> have the attribute <code>@objc</code> is because otherwise the Obj-c runtime will complain when trying to do things like <code>var myDisplayables: [Displayable] = [ Bus() ]</code> or otherwise dynamically check for conformance to a protocol</p>
  
  <p>Again, please note that this is a minimal example.</p>
  
  <p><strong>Update with Swift 1.2:</strong>
  Seems like it's fixed now. Xcode suggests these changes "because the protocol requires it":</p>
  
  <pre><code>class Bus : Displayable { @objc var name = "a bus"; @objc var utterance = "this is a bus"}
  </code></pre>