Ответ 1
Выдержка из Использование Swift с Cocoa и Objective-C
У меня есть подкласс UIViewController, написанный в Swift, называемый BaseViewController. У меня теперь есть "старый" контроллер представлений, называемый "ViewController1", написанный в Objective-C, который я хочу наследовать от "BaseViewController". Следуя другим советам, я импортировал заголовочный файл Project-Swift.h.
Моя проблема возникает, когда подклассы вроде этого
#import <UIKit/UIKit.h>
#import "MyProject-Swift.h"
@interface ViewController1 : BaseViewController
@end
Ошибка:
Нельзя подклассифицировать класс с атрибутом objc_subclassing-limited
и он появляется на строке @interface...
Выдержка из Использование Swift с Cocoa и Objective-C
Вы не можете подклассифицировать класс Swift в Objective-C. ср в конце в этом разделе документации:
Однако обратите внимание, что вы не можете подклассифицировать класс 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