Declarar conformidad con el protocolo @objc en saltos de extensión vacíos con EXC_BAD_INSTRUCTION

He tenido muchos problemas con los protocolos Swift en combinación con los arreglos, pero ni siquiera podía reproducir todo mi problema antes de que las cosas comenzaran a romperse en el patio de recreo. Aquí hay un ejemplo mínimo.

Tengo dos protocolos y una claseBus que declara conformidad con uno de los protocolos. Además, una extensión vacía deBus declara conformidad con el otro protocolo:

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

La salida de la consola puede parecer aleatoria pero no lo es. Lo consigo constantemente si intento crear una instancia deBus:

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.
El error desaparece si comentamos todo@objc atributosEl error desaparece si no nos conformamos conUtterable: extension Bus: Utterable{}

La razón por la cual mis protocolosdebe tener el atributo@objc es porque de lo contrario el tiempo de ejecución de Obj-c se quejará cuando intente hacer cosas comovar myDisplayables: [Displayable] = [ Bus() ] o comprobar dinámicamente la conformidad con un protocolo

Nuevamente, tenga en cuenta que este es un ejemplo mínimo.

Actualización con Swift 1.2: Parece que ya está arreglado. Xcode sugiere estos cambios "porque el protocolo lo requiere":

class Bus : Displayable { @objc var name = "a bus"; @objc var utterance = "this is a bus"}

Respuestas a la pregunta(1)

Su respuesta a la pregunta