在子类化时混合objective-c和swift

时间:2014-06-13 11:26:14

标签: ios objective-c swift

我有一个用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 ...行。

3 个答案:

答案 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