我有一个用Swift编写的UIViewController子类,叫做'BaseViewController'。我现在有一个名为'ViewController1'的'旧'视图控制器,用Objective-C编写,我想从'BaseViewController'继承。按照其他建议,我导入了'Project-Swift.h'头文件。
当像这样继承子
时,我的问题就出现了#import <UIKit/UIKit.h>
#import "MyProject-Swift.h"
@interface ViewController1 : BaseViewController
@end
错误是:
不能使用objc_subclassing-restricted属性
对类进行子类化它出现在@interface ...行。
答案 0 :(得分:88)
答案 1 :(得分:10)
您无法在Objective-C中继承Swift类。比照在this section of the docs结束时:
但是,请注意,您不能在Objective-C中继承Swift类。
答案 2 :(得分:0)
它是一个编译错误,因此U不能在objc中子类化swift类。
SWIFT_CLASS("_TtC6Swifty14ViewController")
@interface ViewController : UIViewController
@end
# if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted)
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif