2017-01-05 5 views
0

Da ich heute mein Anfänger-Tutorial zum Erstellen eigener Klassen in Swift sehr genossen habe, die Objektinstanzen erzeugen können. Ich hoffe, besser zu werden, indem ich auf diesem Wissen aufbaue, um Apples Cocoa Touch APIs zu verwenden. Beim Durchlesen von Klassenreferenzen wie UIViewController, UIResponder und UITouch habe ich jedoch bemerkt, dass diese Klassen keine Init-Funktionen haben, um Instanzen zu spawnen. Denke ich darüber alles falsch oder ist es sicher anzunehmen, dass diese Klassen unterklassifiziert werden sollen? Und wenn sie unterklassiert werden sollen, muss ich dann meine eigene Init-Funktion schreiben, um eine Instanz zu erzeugen und sie zu benutzen?UITouch-Klasse fehlende Init-Funktion

Ein kleiner Hintergrund, ich denke in Bezug auf kleine Legos, wo ich bauen kann, was ich möchte, solange ich mich an Apples abstrakte Rezepte (Klassenreferenzen Dokumentation) halte und die gewünschten Typen wie Strings, Doubles platziere Ganzzahlen usw. an den richtigen Stellen, um die Objekte zum Leben zu erwecken. Denke ich darüber in Bezug auf Apples Objekte richtig?

Hier ist ein Beispiel dessen, was ich in einem Tutorial hat heute die eine init-Funktion hat, wo ich Objekte dieses Typs und der Grund laichen können, warum ich in Bezug auf legos denke:

struct Location: Equatable { 

    let name: String 

    let coordinate: CLLocationCoordinate2D? 

    init(name: String, coordinate: CLLocationCoordinate2D? = nil) { 
     self.name = name 
     self.coordinate = coordinate 
    } 

} 

ich gelesen die schnelle Programmieranleitung und haben ein allgemeines Verständnis. Ich möchte Cocoa Touch so schnell wie möglich genießen, weil es aufregend aussieht.

Ich weiß, ich bin ein Noob und wahrscheinlich zu ein Idiot, der eine Tastatur nicht berühren sollte, also danke im Voraus für jede Klarstellung.

+1

Anstatt Dinge zu erklären und einige Ungenauigkeiten zu riskieren, empfehle ich Ihnen Google jede der drei Klassen und klicken Sie auf den Link developer.apple.com in der Suche zurück. Apple erklärt, wie sehr sich der UIViewController von den beiden anderen unterscheidet, fügt hinzu, wie Sie Instanzen von UIViewController nur selten direkt erstellen und wie UIResponder tatsächlich die Oberklasse von UIApplication und UIView ist. Es fühlt sich für mich so an, als würdest du nicht mit UIKit (Cocoa Touch) den "Apple" Weg greifen. Um ehrlich zu sein, je früher Sie die "Apple" -Methode lernen, desto besser werden Sie sein. Viel Glück! – dfd

Antwort

1

UIViewController hat ein paar init Methoden.

Klassen wie UITouch haben keine öffentlicheinit Methoden, weil Sie nicht sollen Ihre eigenen Instanzen erstellen.

Klassen wie UIViewController sollen unterklassifiziert werden. Es ist nicht üblich, Instanzen von UIViewController direkt zu verwenden.

Und vergessen Sie nicht, dass in Swift jede Unterklasse die init Methoden ihrer Elternklasse erhält, es sei denn, Sie fügen Ihre eigene init Methode explizit hinzu. Dann hat die Unterklasse nur die init Methoden, die Sie explizit hinzufügen.