смешивание 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   51   2014-06-13 15:26:13

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