簡體   English   中英

從Swift生成的Objective-C標頭

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM