Kể từ Swift 3.0.1 , có 4 cấp độ truy cập , được mô tả bên dưới từ mức cao nhất (hạn chế thấp nhất) đến mức thấp nhất (hạn chế nhất).
1. open
vàpublic
Cho phép một thực thể được sử dụng bên ngoài mô-đun xác định (mục tiêu). Bạn thường sử dụng open
hoặc public
truy cập khi chỉ định giao diện chung cho khung.
Tuy nhiên, open
truy cập chỉ áp dụng cho các lớp và thành viên lớp và nó khác với public
truy cập như sau:
public
các lớp và các thành viên lớp chỉ có thể được phân lớp và ghi đè trong mô đun xác định (đích).
open
các lớp và các thành viên lớp có thể được phân lớp và ghi đè cả bên trong và bên ngoài mô đun xác định (đích).
// 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
Cho phép một thực thể được sử dụng trong mô-đun xác định (đích). Bạn thường sử dụng internal
quyền truy cập khi xác định cấu trúc bên trong của ứng dụng hoặc khung.
// 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
Hạn chế việc sử dụng một thực thể đối với tệp nguồn xác định của nó. Bạn thường sử dụng fileprivate
quyền truy cập để ẩn chi tiết triển khai của một phần chức năng cụ thể khi các chi tiết đó được sử dụng trong toàn bộ tệp.
// 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
Hạn chế việc sử dụng một thực thể để khai báo kèm theo. Bạn thường sử dụng private
quyền truy cập để ẩn chi tiết triển khai của một chức năng cụ thể khi các chi tiết đó chỉ được sử dụng trong một khai báo.
// First.framework – A.swift
internal struct A {
private static let x: Int
internal static func doSomethingWithX() {
x // ok
}
}
A.x // error: x is unavailable