我可以防止扩展导出到Objective-C的Swift标头吗?

亚伦·布拉彻(Aaron Bratcher)

我有一个带有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”的协议声明

有没有办法防止它出现在标题中?

谢谢。

亚伦·布拉彻(Aaron Bratcher)

在MessagingExperience.swift中创建一个私有类,该类符合框架中定义的协议。因为它是私有类,所以不会在生成的-Swift.h中指定协议。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以在C中编译选定的标头代码吗

混合的C / C ++标头可以包含另一个混合的标头吗?

C ++标准库标头可以包含C标准标头吗?

C ++-可以在标头之外声明类函数吗?

我可以防止tilda隐藏吗?

可以防止从 yubikey 导出 PIV(私钥)吗?

我可以在RenderScript中使用带有include的C库(标头)吗

我可以安全地使用#ifdef来了解是否包含c ++ std标头吗?

我可以为C ++类提供不完整的标头来隐藏实现细节吗?

我可以禁用或忽略Apple对C标准标头的添加吗?

Visual Studio 2017中的Intellisense可以建议包含C ++标头吗?

您可以在C#程序中更改Web服务标头吗

我可以防止JDialog在退出/输入时关闭吗?

我可以防止类被非抽象对象继承吗?

我可以防止Java引发某些异常吗?

我可以防止生成App.gics吗?

我可以防止将“ def”替换为“ val”吗?

我可以防止Babel遍历插件插入的代码吗?

我可以防止对象被std :: memcpy复制吗?

我可以防止无效的minidump文件名吗

我可以防止样式规则被继承吗?

我可以防止sarima.for密谋吗?

我可以使用python的SimpleHTTPServer设置标头吗?

我可以使用python的SimpleHTTPServer设置标头吗?

我可以通过这种方式访问HTTP标头吗?

我可以为bash脚本(如C ++“#pragma一次”)制作一次评估标头吗?

当大量文本输出到终端时,有什么方法可以防止tmux冻结吗?

我可以将tensorflow摘要导出到CSV吗?

将 webpack 2 配置导出为函数可以防止转译吗?