Як відомо, не можна включати файл заголовка інтерфейсу з файлу в -Header.h. Моя фактична проблема полягає в тому, що у мене є визначення протоколу класу 1, який є Swift:
@protocol arrivingDelegate;
@interface palettaTraffic : NSObject<MKMapViewDelegate, arrivingDelegate> {
}
Якщо я імпортую файл * -Swift.h, я потрапляю в потворний цикл, коли файл включений в інший, який включений у файл заголовка.
Це відбувається, коли я використовую директиву @protocol: це попередження, але досить тривожний.
Ось як визначається швидкий протокол:
@objc public protocol arrivingDelegate {
func submitManualBusLine(busStripe:StripeProtocol)
}
Я також знайшов подібний пост: Swift протокол в класі Objective-C
Але жодне з пропозицій не застосовується.
Відповіді:
0 для відповіді № 1Якщо я імпортую файл * -Swift.h, я потрапляю в потворний цикл, коли файл включений в інший, який включений у файл заголовка.
Гаразд, але це те, що вам потрібно зробити. Я не бачу, як ви робите це знімок екрана вище, тому ваш протокол не розглядається.
Рішення "потворного циклу" має бути лише питанням налаштування замовлення в якій речі імпортуються у ваші різні Objective-C файли.
0 для відповіді № 2
Прийняття швидких протоколів в Objective-c - складний процес. Я виправив проблему, перенесшивши прийомний клас на Свіфт.
0 для відповіді № 3
Те, що я схильний робити в моїх проектах, - це усунути відповідність протоколу класу ObjC у файлі Swift, щоб уникнути цієї помилки. Зазвичай файл, де визначено протокол.
extension PalettaTraffic: ArrivingDelegate {}
Чому? Ми переміщуємо нашу кодову базу від ObjC до Swift, але ми не можемо мігрувати кожен клас одночасно, тому ми маємо великий "здається" між Swift & ObjC, де типу Swift потрібні ObjC і навпаки. Для мене це рішення, яке викликає найменшу кількість робіт відразу.