我有一个带有Swift类的Objective-C项目。此类使用的框架也使用Swift编写。(使用CocoaPods包含框架)
我的问题是-Swift.h文件正在导出遵循框架协议的扩展。现在,当我尝试在Objective-C中导入-Swift.h文件时,它抱怨找不到协议定义。
我不希望这些扩展导出。它们仅在此类中使用。我不能将private或fileprivate用于声明协议一致性的扩展。我还尝试在扩展声明之前添加@nonobjc(将警告级联到我的方法中),并且仍将其导出。
这是我的扩展名:
extension MessagingExperience: MessagingDelegate {
...
}
extension MessagingExperience: MessagingNotificationDelegate {
...
}
并生成标头:
@interface MessagingExperience (SWIFT_EXTENSION(Reference_App)) <MessagingDelegate>
- (void)MessagingObseleteVersion:(NSError * _Nonnull)error;
- (void)MessagingError:(NSError * _Nonnull)error;
@end
@interface MessagingExperience (SWIFT_EXTENSION(Reference_App)) <MessagingNotificationDelegate>
- (BOOL)shouldShowMessagingNotificationWithNotification:(MessagingNotification * _Nonnull)notification SWIFT_WARN_UNUSED_RESULT;
- (void)messagingNotificationTapped:(MessagingNotification * _Nonnull)notification;
- (UIView * _Nonnull)customMessagingNotificationViewWithNotification:(MessagingNotification * _Nonnull)notification SWIFT_WARN_UNUSED_RESULT;
@end
通过将-Swift.h包含在Objective-C类中而产生的错误:
找不到“ MessagingDelegate”的协议声明
找不到“ MessagingNotificationDelegate”的协议声明
有没有办法防止它出现在标题中?
谢谢。
在MessagingExperience.swift中创建一个私有类,该类符合框架中定义的协议。因为它是私有类,所以不会在生成的-Swift.h中指定协议。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句