/ / Skrat pri použití protokolu Swift - ios, object-c, swift, protokoly

Skrat pri používaní protokolu Swift - ios, objective-c, swift, protokoly

Ako je známe, nie je možné zahrnúť súbor hlavičky rozhrania zo súboru do súboru -Header.h. Môj skutočný problém je v tom, že mám definíciu protokolu triedy jedna, ktorého je protokol Swift:

@protocol arrivingDelegate;

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

Ak importujem súbor * -Swift.h, dostanem sa do škaredého cyklu, keď je súbor zahrnutý v inom, ktorý je zahrnutý v súbore hlavičky.

To sa stane, keď použijem smernicu @protocol: je to varovanie, ale dosť znepokojujúce.

Snímka obrazovky s upozornením

Takto sa definuje rýchly protokol:

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

Tiež som našiel podobný príspevok: Protokol Swift v triede Objective-C

Zdá sa však, že žiadny z týchto návrhov neplatí.

odpovede:

0 pre odpoveď č. 1

Ak importujem súbor * -Swift.h, dostanem sa do škaredého cyklu, keď je súbor zahrnutý v inom, ktorý je zahrnutý v súbore hlavičky.

Dobre, ale to je to, čo musíte urobiť. Nevidím, že to robíte na obrazovke vyššie, čo je dôvod, prečo sa váš protokol nevidí.

Riešenie "škaredého cyklu" by malo byť len otázkou vyladenia systému objednať v ktorých sa veci importujú do rôznych súborov Objective-C.


0 pre odpoveď č. 2

Prijímanie rýchlych protokolov v Objective-c je zložitý proces. Problém som vyriešil aj tým, že som adoptujúcu triedu preniesol na Swift.


0 pre odpoveď č. 3

Vo svojich projektoch mám tendenciu vkladať protokol zhodnosti triedy ObjC do súboru Swift, aby sa predišlo tejto chybe. Zvyčajne súbor, v ktorom je definovaný protokol.

extension PalettaTraffic: ArrivingDelegate {}

Prečo? Migrujeme našu kódovú základňu z ObjC do Swift, ale nemôžeme migrovať každú triedu súčasne. Z tohto dôvodu máme medzi „Swift & ObjC“ veľký „jav“, kde typy Swift potrebujú ObjC a naopak. Pre mňa to je riešenie, ktoré ihneď vyvolá najmenšie množstvo práce.