смешивание objective-c и swift при подклассе
У меня есть подкласс UIViewController, написанный на Swift под названием '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 ответов:
вы не можете подкласс Swift класс в Objective-C. cf. ближе к концу этот раздел документов:
однако обратите внимание, что вы не можете подкласс класса Swift в Objective-C.
это ошибка компиляции, поэтому U не может подкласс swift класса в objc.
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
Comments