Lassen Sie uns sagen, dass ich eine generische Klasse in Swift, ähnlich der folgenden definieren:eine allgemeine Swift Klasse in Objective-C Mit
class MyArray<T> {
func addObject(object: T) {
// do something... hopefully
}
}
(ich weiß, dass es ein leicht ist eine bessere Umsetzung der Anordnung, das ist lediglich ein Beispiel)
In Swift ich jetzt diese Klasse sehr leicht bedienen kann.
let a = MyArray<String>()
a.addObject("abc")
With Xcode 7, we now have generics in Objective-C, also würde ich davon ausgehen, dass ich zusammen uld diese Klasse in Objective-C verwenden:
MyArray<NSString*> *a = [[MyArray<NSString*> alloc] init];
[a addObject:@"abc"];
ist jedoch MyArray nie zu meiner Project-Swift.h
Datei hinzugefügt. Selbst wenn ich es so ändere, dass es von NSObject erbt, erscheint es immer noch nicht in meiner Swift.h-Datei.
Gibt es eine Möglichkeit, eine generische Swift-Klasse zu erstellen und sie dann in Objective-C zu verwenden?
Update: Wenn ich versuche, von NSObject zu erben und mit Anmerkungen versehen mit @objc:
@objc(MyArray)
class MyArray<T>: NSObject {
func addObject(object: T) {
// do something... hopefully
}
}
ich die folgenden Compiler-Fehler:
Generic subclasses of '@objc' classes cannot have an explicit '@objc' attribute because they are not directly visible from Objective-C.
Bedeutet dies, es gibt keine Möglichkeit, eine generische Swift-Klasse in Objective-C zu verwenden?
Wie kann man in direkt Bezug auf die Klasse?
Haben Sie Ihre Klasse mit einem @objc versehen? –
@MrBeardsley Ich habe es gerade versucht und es gab einen interessanten Compiler Fehler (siehe oben). – Senseful