In Swift 4.0 ist Private jetzt in der Erweiterung, jedoch in derselben Datei, verfügbar. Wenn Sie eine Erweiterung in einer anderen Datei deklarieren / definieren, kann Ihre Erweiterung nicht auf Ihre private Variable zugreifen **
File Private
File-Private Access beschränkt die Verwendung einer Entität auf ihre eigene definierende Quelldatei. Verwenden Sie den dateiprivaten Zugriff, um die Implementierungsdetails einer bestimmten Funktionalität auszublenden, wenn diese Details in einer gesamten Datei verwendet werden.
Syntax: fileprivate <var type> <variable name>
Beispiel: fileprivate class SomeFilePrivateClass {}
Privat
Privater Zugriff beschränkt die Verwendung einer Entität auf die beiliegende Deklaration und auf Erweiterungen dieser Deklaration, die sich in derselben Datei befinden . Verwenden Sie den privaten Zugriff, um die Implementierungsdetails einer bestimmten Funktionalität auszublenden, wenn diese Details nur in einer einzelnen Deklaration verwendet werden.
Syntax: private <var type> <variable name>
Beispiel: private class SomePrivateClass {}
Hier finden Sie weitere Details zu allen Zugriffsebenen: Swift - Zugriffsebenen
Schauen Sie sich diese Bilder an:
Datei: ViewController.swift
Hier befinden sich sowohl die Erweiterung als auch der Ansichtscontroller in derselben Datei, sodass auf private Variablen testPrivateAccessLevel
in der Erweiterung zugegriffen werden kann
Datei: TestFile.swift
Hier befinden sich sowohl die Erweiterung als auch der Ansichts-Controller in unterschiedlichen Dateien, sodass auf private Variablen testPrivateAccessLevel
in der Erweiterung nicht zugegriffen werden kann
.
Hier ist die Klasse ViewController2
eine Unterklasse von ViewController
und beide befinden sich in derselben Datei. Hier ist auf die private Variable testPrivateAccessLevel
in der Unterklasse nicht zugegriffen, auf fileprivate jedoch in der Unterklasse.
private
zufileprivate
. Wenn Sie jedoch den Luxus haben, es von Hand zu tun, können Sie oft davon profitieren,private
alsprivate
... wenn es kompiliert wird, alles gut.