[英]{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.