[英]Generated Objective-C header from Swift
我有从Swift类生成的ObjC头文件( Project-Swift.h
)的问题。
头文件包含定义的Swift类的表示形式和所有必需依赖项的导入。 实际上,我将ObjC和Swift结合在一个项目中。 一切工作正常,直到我想创建子XYZTableViewController
斯威夫特类的ABCTableViewController
从外部框架。
swift文件中类的定义:
@objc class XYZTableViewController: ABCTableViewController { ... }
从Project-Swift.h
生成的内容:
SWIFT_CLASS("_TtC6Abc22XYZTableViewController") @interface XYZTableViewController : ABCTableViewController - (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; - (nonnull instancetype)initWithNibName:(NSString * _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil OBJC_DESIGNATED_INITIALIZER; - (nonnull instancetype)initWithStyle:(UITableViewStyle)style OBJC_DESIGNATED_INITIALIZER; @end
编译完成,出现以下错误:
Project-Swift.h:140:37:找不到'XYZTableViewController'的超类'ABCTableViewController'的接口声明; 您是说'UITableViewController'吗?
如果我将模块导入外部框架的.m文件并定义相关类类型的属性,则它可以工作。
是否有人有这个问题或其他类似的并发症?
You cannot subclass a Swift class in Objective-C.
取自将Swift与Cocoa和Objective-C结合使用 。
因此,可以的,您可以将ABCTableViewController
用作合成的ABCTableViewController
,但不能从其继承。
我在项目结构中发现问题。 我不知道为什么,但是项目包含未使用的ObjC ++源.mm,在这种情况下,编译器会忽略项目设置,也不会生成模块。
有用且相关的页面: 禁用模块时使用@import
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.