İtibariyle Swift 3.0.1 vardır 4 erişim seviyelerinin en düşük (en kısıtlayıcı) en yüksek (en az kısıtlayıcı) aşağıda tarif edilen,.
1. open
vepublic
Varlığın, tanımlayıcı modülün (hedef) dışında kullanılmasını sağlayın. Bir çerçeveye genel arabirimi belirtirken genellikle kullanır open
veya public
erişirsiniz.
Ancak, open
erişim yalnızca sınıflar ve sınıf üyeleri için geçerlidir ve public
erişimden şu şekilde farklıdır :
public
sınıflar ve sınıf üyeleri yalnızca tanımlayıcı modül (hedef) içinde alt sınıflara ayrılabilir ve geçersiz kılınabilir.
open
sınıflar ve sınıf üyeleri tanımlayıcı modülün (hedef) içinde ve dışında alt sınıflara ayrılabilir ve geçersiz kılınabilir.
// First.framework – A.swift
open class A {}
// First.framework – B.swift
public class B: A {} // ok
// Second.framework – C.swift
import First
internal class C: A {} // ok
// Second.framework – D.swift
import First
internal class D: B {} // error: B cannot be subclassed
2. internal
Bir varlığın tanımlayıcı modül (hedef) içinde kullanılmasını sağlar. internal
Erişimi genellikle bir uygulamanın veya çerçevenin dahili yapısını tanımlarken kullanırsınız .
// First.framework – A.swift
internal struct A {}
// First.framework – B.swift
A() // ok
// Second.framework – C.swift
import First
A() // error: A is unavailable
3. fileprivate
Bir varlığın kullanımını tanımlayıcı kaynak dosyasıyla kısıtlar. Bu fileprivate
ayrıntılar bir dosya içinde kullanıldığında, genellikle belirli bir işlev parçasının uygulama ayrıntılarını gizlemek için erişim kullanırsınız .
// First.framework – A.swift
internal struct A {
fileprivate static let x: Int
}
A.x // ok
// First.framework – B.swift
A.x // error: x is not available
4. private
Bir varlığın kullanımını ek beyanıyla sınırlar. Bu private
ayrıntıları yalnızca tek bir bildirimde kullanıldığında, belirli bir işlev parçasının uygulama ayrıntılarını gizlemek için genellikle erişimi kullanırsınız .
// First.framework – A.swift
internal struct A {
private static let x: Int
internal static func doSomethingWithX() {
x // ok
}
}
A.x // error: x is unavailable