2016-01-07 12 views
5

Ich habe gerade festgestellt, dass eine Datei mit dem Namen ViewController.swift (Interface) automatisch von Xcode erstellt wurde, als ich meinen ersten ViewController erstellt.Was ist die ViewController.swift (Interface) Datei für - in Counterparts

Haben Klassen in Swift die gleichen Schnittstellen wie in Objective-C und werden hinter den Kulissen von Xcode erzeugt?

Kann jemand so freundlich sein und erklären, was der Zweck dieser Datei ist?

ViewController.swift (Interface)

import UIKit 

internal class ViewController : UIViewController { 

    override internal func viewDidLoad() 

    override internal func didReceiveMemoryWarning() 
} 

Antwort

9

In C und Objective-C, haben Sie separate Schnittstelle (.h) und Implementierung (.c, .m-Dateien).

  1. Die Schnittstellendatei gibt einen schnellen Überblick über alle Methoden und Eigenschaften dieser Klasse, die auf anderen Code verfügbar sind (sofern sie die Schnittstellendatei importieren). Es ist wie der Kapitelindex eines Buches.
  2. Die Implementierung, auf der anderen Seite ist, wo der tatsächliche Methodencode geschrieben wird.

In Swift, auf der anderen Seite, gibt es keine solche Unterscheidung und Klassen sind auf alle Ihre Code automatisch zur Verfügung. Der Vorteil ist natürlich, dass die Anzahl der Quelldateien in Ihrem Projekt ungefähr halbiert ist und Sie nicht zwischen der Schnittstellendatei und der Implementierungsdatei hin- und herwechseln müssen (alles an einem Ort)).

Also, um das Fehlen einer "Interface-only" -Datei (wie die Header in C/Objective-C) auszugleichen, generiert Xcode einen "on the fly", nur um Ihnen die verfügbaren Methoden zu zeigen und Eigenschaften dieser Klasse. Sie werden feststellen, dass Methodenkörper fehlen, sowie Eigenschaften und Methoden, die als private deklariert sind (weil sie außerhalb der Klasse nicht zugänglich sind und daher definitionsgemäß nicht Teil der "Schnittstelle" sind).

Es ist keine echte Datei, die sich irgendwo in Ihrem Dateisystem befindet (soweit ich weiß).

+0

Interessant, so ist es wie eine Kurzzusammenfassung, die Sie wissen lässt, welche Methoden oder Eigenschaften Sie der Außenwelt (oder zwischen Projekten) ausgesetzt sind. Ich sehe dies als eine Killereigenschaft beim Erstellen von APIs/Frameworks, besonders weil Swift benötigt keine Schnittstellendateien. Vielen Dank für die Klärung. –

1

In swift Sie haben keine separate Schnittstelle (oder Header-Dateien) und Implementierungsdateien. Sie erstellen die Klassenschnittstelle und die Implementierung zusammen in derselben Datei. Andere Teile des Projekts erhalten automatisch Zugriff auf den Typ, der in einer bestimmten Datei enthalten ist.

Kommen wir nun zu ViewController.Swift, das ist die Datei, in der die Controller-Layer-Logik Ihrer Ansicht liegt. Bitte beachten Sie diese Dokumentations-

https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/

Verwandte Themen