繁体   English   中英

{Module_name} -Swift.h文件仅在与Swift 3.2不同的Swift 4项目中无法正常工作

[英]{Module_name}-Swift.h file not working well only in Swift 4 projects unlike Swift 3.2

有人在Swift 4项目的{Module_name}-Swift.h文件中遇到问题吗? 我注意到-Swift.h自动生成的文件不能像Swift 3.2那样与Swift 4语法配合使用。

例如, -Swift.h文件不包含在自NSObject类继承的自定义Swift类中实现的所有变量和方法!

我用过@objc@class关键字,但是没有办法。

  • 我没有任何错误! 问题是如果我创建了这样的类:
 import Foundation class Utils: NSObject { let abc: String? func xyz() { print("") } } 

并导航到{Module_name}-Swift.h我看到这样的内容:

SWIFT_CLASS("_TtC3{Module_name}5Utils") 
@interface Utils : NSObject 
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; 
@end

问题

let abc: String? func xyz()从未包含在{Modue_name}-Swift.h文件中!

我认为在Swift 4中,您必须标记更多的@objc东西(不再隐含),但@objc它应该就在其中。

您都可以检查它以确认.h文件中的类名称,例如:

@class文件名;

生成的文件{Module}-Swift.h不包含您的变量和方法,而是通过生成该文件使您可以访问Module名称空间。

生成的模块的实际接口位于Module.swiftmodule/arm64.swiftmodule (取决于构建的体系结构)。

有关其内容的更多信息:

但是...该格式在任何地方都没有记录,并且可能随时更改。 一个很好的起点是查看include/swift/Serialization/ModuleFormat.h


至于为什么它不起作用-Swift 4具有迁移过程,请确保您已遵循它: https : //swift.org/migration-guide-swift4/

Xcode可以处理大多数事情……但是它不会得到一切!

为什么需要Swift类的头文件? 您只需将swift类标记为@objc即可访问其所有属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM