ตั้งแต่Swift 3.0.1มีการเข้าถึง 4 ระดับซึ่งอธิบายไว้ด้านล่างจากระดับสูงสุด (จำกัด น้อยที่สุด) ถึงต่ำสุด (จำกัด มากที่สุด)
1. open
และpublic
เปิดใช้งานเอนทิตีที่จะใช้ภายนอกโมดูลที่กำหนด (เป้าหมาย) โดยทั่วไปคุณใช้open
หรือpublic
เข้าถึงเมื่อระบุส่วนต่อประสานสาธารณะกับกรอบงาน
อย่างไรก็ตามopen
การเข้าถึงจะใช้กับคลาสและสมาชิกคลาสเท่านั้นและจะแตกต่างจากpublic
การเข้าถึงดังต่อไปนี้:
public
คลาสและสมาชิกคลาสสามารถถูก subclassed และ overridden ภายในโมดูลที่กำหนด (เป้าหมาย)
open
คลาสและสมาชิกคลาสสามารถ subclassed และแทนที่ทั้งภายในและภายนอกโมดูลกำหนด (เป้าหมาย)
// 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
เปิดใช้งานเอนทิตีที่จะใช้ภายในโมดูลที่กำหนด (เป้าหมาย) โดยทั่วไปคุณจะใช้internal
การเข้าถึงเมื่อกำหนดโครงสร้างภายในของแอพหรือกรอบงาน
// 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
จำกัด การใช้งานของเอนทิตีเพื่อกำหนดไฟล์ต้นฉบับ โดยทั่วไปคุณใช้fileprivate
การเข้าถึงเพื่อซ่อนรายละเอียดการใช้งานของส่วนการทำงานเฉพาะเมื่อใช้รายละเอียดเหล่านั้นภายในไฟล์ทั้งหมด
// 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
จำกัด การใช้งานของนิติบุคคลเพื่อการประกาศล้อมรอบ โดยทั่วไปคุณใช้private
การเข้าถึงเพื่อซ่อนรายละเอียดการใช้งานของส่วนการทำงานเฉพาะเมื่อรายละเอียดเหล่านั้นถูกใช้ภายในการประกาศเพียงครั้งเดียว
// First.framework – A.swift
internal struct A {
private static let x: Int
internal static func doSomethingWithX() {
x // ok
}
}
A.x // error: x is unavailable