W Swift 4.0 opcja Prywatne jest teraz dostępna w rozszerzeniu, ale w tym samym pliku. Jeśli zadeklarujesz/określić rozszerzenie w innym pliku, wówczas zmienna prywatny nie będzie dostępna do rozszerzenia **
Plik Prywatna
dostęp File-prywatnego ogranicza stosowanie jednostki do własnej definiującej pliku źródłowego. Użyj dostępu do pliku prywatnego, aby ukryć szczegóły implementacji określonego elementu funkcjonalności, gdy te szczegóły są używane w całym pliku.
Składnia:fileprivate <var type> <variable name>
Przykład:fileprivate class SomeFilePrivateClass {}
Prywatna
Prywatny dostęp ogranicza stosowanie podmiotu do oświadczenia otaczającej oraz przedłużeń tej deklaracji że są w tym samym plik. Użyj dostępu prywatnego, aby ukryć szczegóły implementacji określonego elementu funkcjonalności, gdy te szczegóły są używane tylko w ramach pojedynczej deklaracji.
Składnia:private <var type> <variable name>
Przykład:private class SomePrivateClass {}
Oto więcej szczegółów na temat wszystkich poziomach dostępu: Swift - Access Levels
Spójrz na to obrazy:
pliku: ViewController.swift
Tutaj oba kontrolki rozszerzenia i widoku są takie same Plik, stąd prywatna zmienna testPrivateAccessLevel
dostępny jest w rozszerzeniu
Plik: TestFile.swift
Tutaj rozbudowa i widok kontroler oba są w różnych plików, stąd prywatna zmienna testPrivateAccessLevel
nie jest dostępna w rozszerzeniu.
Tutaj klasa ViewController2
jest podklasą ViewController
i oba są w tym samym pliku. W tym przypadku zmienna prywatna testPrivateAccessLevel
nie jest dostępna w podklasie, ale fileprivate jest dostępny w podklasie.
Jeśli konwertujesz kod automatycznie z Swift 2 na 3, Xcode zamieni 'private' na' fileprivate'. Jeśli jednak masz luksus robienia tego ręcznie, często możesz odnieść korzyść z pozostawienia "prywatnego" jako "prywatnego" ... jeśli to kompiluje, wszystko dobrze. –