Swift erlaubt es nicht, einen Typ und ein Protokoll wie Objective-C zu kombinieren, obwohl Sie eine Kombination von Protokollen angeben können. Da AnyObject
in der Tat ist ein Protokoll, können Sie erreichen, was Sie oben durch Schreiben zum Ausdruck bringen wollen:
public struct Subscription {
private weak var subscriber:protocol<Subscriber, AnyObject>? = nil
}
Diese subscriber
sowohl die Subscriber
und die AnyObject
Protokolle anzupassen erfordern.
In Ihrem Fall oben, brauchen Sie eigentlich nicht den AnyObject
Teil, da Sie das Subscriber
Protokoll ein class
Protokoll hergestellt, das im Wesentlichen, dass garantiert jede konforme Art ist auch ein AnyObject
. So konnte man nur schreiben:
public struct Subscription {
private weak var subscriber:Subscriber? = nil
}
Aber der protocol<Subscriber, AnyObject>
Ansatz würde Ihr Subscriber-Protokoll erlaubt, nicht nur Klassentypen eingeschränkt werden, während dieser spezifischen subscriber
schwach var auf Klassentypen beschränkt zu machen, die Subscriber
implementieren.