Скажем, я определяю общий класс в Swift, аналогичный следующему:
class MyArray<T> {
func addObject(object: T) {
// do something... hopefully
}
}
(Я знаю, что есть немного лучшая реализация массива, это просто пример.)
В Swift я могу использовать этот класс очень легко:
let a = MyArray<String>()
a.addObject("abc")
С Xcode 7 теперь у нас есть дженерики в Objective-C, поэтому я бы предположил, что могу использовать этот класс в Objective-C:
MyArray<NSString*> *a = [[MyArray<NSString*> alloc] init];
[a addObject:@"abc"];
Однако MyArray никогда не добавляется в мой файл Project-Swift.h
. Даже если я изменил его наследование из NSObject, он все равно не появляется в моем файле Swift.h.
Есть ли способ создать общий класс Swift, а затем использовать его в Objective-C?
Обновление: Если я пытаюсь наследовать из NSObject и комментировать @objc:
@objc(MyArray)
class MyArray<T>: NSObject {
func addObject(object: T) {
// do something... hopefully
}
}
Я получаю следующую ошибку компилятора:
Общие подклассы классов @objc не могут иметь явный атрибут @objc, потому что они не видны непосредственно из Objective-C.
Означает ли это, что нет возможности использовать общий класс Swift в Objective-C?
Как косвенно ссылается класс?