Ist String eine Klasse oder eine Struktur? Oder etwas anderes?

8
%Vor%

gibt einen Fehler:

  

Vererbung von Nicht-Protokoll, Nicht-Klassen-Typ 'String' '.

Sieht so aus, als wäre String keine Klasse. Aber warum kann es in einem Kontext verwendet werden, in dem AnyObject erwartet wird? Ich denke, AnyObject ist nur für den Klassen-Typ, während Any ein Klassen- oder Nicht-Klassen-Typ sein könnte.

    
Ethan 04.08.2014, 05:08
quelle

1 Antwort

16

Wenn Sie den Befehl + klicken, klicken Sie auf String in Xcode

%Vor%

So String ist ein struct .

Sie können keine Unterklasse von struct erstellen, wie die Fehlermeldung besagt:

  

Fehler: Vererbung von Nicht-Protokoll, Nicht-Klassen-Typ 'String'

Sie können es jedoch implizit in NSString konvertieren (das ist der Untertyp von AnyObject ) , nur wenn Sie Foundation direkt oder indirekt importiert haben.

Von REPL

%Vor% %Vor%

Aber versuchen Sie, die Unterklasse String oder NSString zu vermeiden, es sei denn, Sie müssen unbedingt. Weitere Informationen finden Sie unter NSString Subclassing Notes

Verwenden Sie die Erweiterung, um eine neue Methode zu String

hinzuzufügen %Vor%

Verwenden Sie Delegierungsmuster, wenn Sie mehr Kontrolle darüber haben möchten

%Vor%     
Bryan Chen 04.08.2014, 06:46
quelle

Tags und Links