Когда я открыл сгенерированный интерфейс MyClass.h, Xcode показал что-то вроде этого:
import Foundation
open class MyClass : NSObject {
}
Ничего больше, кроме комментариев.
Кажется Swift не может импортировать неполные перечисления , поэтому методы, использующие такие типы, также не импортируются.
Итак, ваш @objc enum MyEnum
просто объявляет новый тип перечисления, а override func method(_ param: MyEnum)
является попыткой переопределить метод, который не существует в егосуперкласс, со стороны Swift.
Само перечисление работает в Swift
Конечно.Перечисление работает, даже если вы удалили строку typedef
(со всеми использующими ее строками) из MyClass.h.
Перечисление работает, даже если вы указали тип, отличный от NSInteger
:
@objc enum MyEnum: UInt8 {
case case1
}
Похоже, вы не можете написать фактическое определение перечисления в Swift, которое объявлено как неполное перечисление в Objective-C.