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