/ / Cortocircuito quando si utilizza un protocollo Swift - protocolli ios, objective-c, swift

Cortocircuito quando si utilizza un protocollo Swift: protocolli ios, objective-c, swift

Come noto, non è possibile includere il file di intestazione dell'interfaccia da un file in -Header.h. Il mio problema attuale è che ho la definizione di un protocollo di prima classe di cui è uno Swift:

@protocol arrivingDelegate;

@interface palettaTraffic : NSObject<MKMapViewDelegate, arrivingDelegate> {
}

Se impongo il file * -Swift.h, arrivo al ciclo brutto quando il file è incluso in un altro che è incluso nel file di intestazione.

Questo è quello che succede quando uso la direttiva @protocol: è un avvertimento, ma piuttosto inquietante.

Screen-shot con gli avvertimenti

Ecco come viene definito il protocollo swift:

@objc public protocol arrivingDelegate {
func submitManualBusLine(busStripe:StripeProtocol)
}

Ho trovato anche un post simile: Protocollo Swift nella classe Objective-C

Ma nessuno dei suggerimenti sembra applicarsi.

risposte:

0 per risposta № 1

Se impongo il file * -Swift.h, arrivo al ciclo brutto quando il file è incluso in un altro che è incluso nel file di intestazione.

Ok, ma questo è quello che devi fare. Non ti vedo fare la schermata sopra, ecco perché il tuo protocollo non viene visto.

La soluzione al "ciclo brutto" dovrebbe essere solo una questione di modifica del ordine in cui le cose vengono importate nei vari file Objective-C.


0 per risposta № 2

L'adozione di protocolli rapidi in Objective-c è un processo complicato. Ho risolto il problema trasferendo anche la classe adottiva a Swift.


0 per risposta № 3

Quello che tendo a fare nei miei progetti è mettere la conformità del protocollo della classe ObjC in un file Swift, per evitare questo errore. Di solito il file in cui è definito il protocollo.

extension PalettaTraffic: ArrivingDelegate {}

Perché? Stiamo migrando la nostra base di codice da ObjC a Swift, ma non possiamo migrare tutte le classi contemporaneamente.Per questo abbiamo un grande "aspetto" tra Swift e ObjC dove i tipi di Swift hanno bisogno di ObjC e viceversa. la soluzione che causa la minor quantità di lavoro subito.