반응형
서브 클래 싱 할 때 Objective-c와 swift 혼합
'BaseViewController'라는 Swift로 작성된 UIViewController의 하위 클래스가 있습니다. 이제 'BaseViewController'에서 상속하고 싶은 Objective-C로 작성된 'ViewController1'이라는 '오래된'뷰 컨트롤러가 있습니다. 다른 조언에 따라 'Project-Swift.h'헤더 파일을 가져 왔습니다.
내 문제는 이와 같은 하위 클래스를 만들 때 발생합니다.
#import <UIKit/UIKit.h>
#import "MyProject-Swift.h"
@interface ViewController1 : BaseViewController
@end
오류는 다음과 같습니다.
objc_subclassing-restricted 속성으로 클래스를 서브 클래 싱 할 수 없습니다.
@interface ... 줄에 나타납니다.
Cocoa 및 Objective-C와 함께 Swift 사용 에서 발췌
Objective-C에서 Swift 클래스를 하위 클래스로 만들 수 없습니다. cf. 문서의이 섹션 끝 부분 :
그러나 Objective-C에서는 Swift 클래스를 서브 클래 싱 할 수 없습니다.
컴파일 오류이므로 U는 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
참조 URL : https://stackoverflow.com/questions/24204211/mixing-objective-c-and-swift-when-subclassing
반응형
'UFO ET IT' 카테고리의 다른 글
Vagrant는 동일한 시스템에서 여러 포트를 어떻게 전달할 수 있습니까? (0) | 2021.01.07 |
---|---|
Ansible : Ansible Playbook에서 Active Directory를 변경하는 방법은 무엇입니까? (0) | 2021.01.07 |
디버그 모드에서 실행되지 않는 경우에도 "디버거 연결 대기 중"표시 (0) | 2021.01.06 |
AFNetworking으로 세션을 관리하는 방법은 무엇입니까? (0) | 2021.01.06 |
멤버 변수를 클래스 멤버로 참조 (0) | 2021.01.06 |