Подтвердить что ты не робот

Смешивание 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...

4b9b3361

Ответ 2

Вы не можете подклассифицировать класс Swift в Objective-C. ср в конце в этом разделе документации:

Однако обратите внимание, что вы не можете подклассифицировать класс Swift в Objective-C.

Ответ 3

Это компиляционная ошибка, поэтому 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