2016-06-01 4 views
1

Nur die Protokollnutzung ist mir klar. Ich weiß, ich kann so etwas tun:Ist es möglich, eine Nur-Klasse-Erweiterung für das Protokoll zu erstellen?

protocol HashableClass: class, Hashable {} 

Aber ich frage mich, ob es möglich ist, Klasse zu erstellen, die nur die Erweiterung:

extension Hashable: class {}/extension Hashable where Self is class {} ?? 

Die zweite Frage ist: Ist es möglich, nicht Klasse Protokolle zu erstellen (Zähler Teil der Klasse nur Protokolle)?

Vielen Dank im Voraus.

Antwort

4

Alle Klassen entsprechen implizit AnyObject, so können Sie eine "Klasse-only-Erweiterung" definieren mit

extension Hashable where Self: AnyObject { 

} 

(Auch scheint es keinen Unterschied zwischen protocol Foo: class und protocol Foo: AnyObject zu sein, vergleichen What's the difference between a protocol extended from AnyObject and a class-only protocol?.)

Die Beschränkung eines Protokolls auf Nicht-Klassen-Typen ist - soweit ich weiß - nicht möglich.