Xcode 8.2 (대상 8.0 빌드)의 Swift 2.3 코드에서 Objective-C 메서드를 호출합니다. 이 매개 변수로 NS_ENUM을 허용 :이 열거 및 방법을 포함Swift에서 Objective-C Enum 사용
typedef NS_ENUM(NSUInteger, MLCMultipleChoiceSlideSubtype) {
MLCMultipleChoiceSlideSubtypeQA,
MLCMultipleChoiceSlideSubtypeFillInTheBlank,
MLCMultipleChoiceSlideSubtypeUnknown
};
.H 파일 내 브리징-header.h가 파일에 있습니다.
+ (nullable instancetype)slideWithSubtype:(MLCMultipleChoiceSlideSubtype)subtype testSlide:(nonnull TestSlide *)slide distractorFinder:(nonnull MultipleChoiceDistractorFinder *)distractorFinder;
가 그럼 난 이렇게 스위프트 2.3에서 호출 : 내가 디버그를 컴파일하고 실행하면
if let mcSlide = MultipleChoiceSlide(subtype: .QA, testSlide: slide, distractorFinder: distractorFinder) {
return mcSlide
}
이 잘 작동이는 objc 방법의 서명입니다. 나는 그것을 보관 및 릴리스 컴파일 할 때, 나는이 메시지 : 내가 빌드 또는 무엇 그것을 해결하기 위해 할 수있는 보관할 때 만 발생하는 이유
... LessonConvertToMultipleChoiceOperation.swift:55:64: Static member 'QA' cannot be used on instance of type 'MLCMultipleChoiceSlideSubtype'
나는 아무 생각이 없습니다.
편집 : 나는 다른 곳에서 보았던 유사한 문제에 대한 답변을 바탕으로, 나는 내 방식으로 디버깅 릴리스에서 아카이브 빌드 구성을 변경하고, 지금 아카이브. 이것은 그러나 좋은 일처럼 보이지 않습니다. 이렇게하면 아카이브에 디버그 기호가 포함됩니까?
그것은하지만 제대로 컴파일 소스에서, 시스템에 존재하는 뭔가처럼 들린다. 나는이 문제에 대해 전혀 전문가가 아니다. – Sethmr
전체 프로젝트를 보지 않으면 대답하기가 매우 어렵습니다. "Debug"와 "Release"구성의 차이점을 찾으십시오. 아마도 뭔가 필요한 것이'#ifdef DEBUG' 안에 싸여 있습니까? 가드? – Sulthan