स्विफ्ट 3.0.1 के रूप में , पहुँच के 4 स्तर हैं , सबसे नीचे (सबसे कम प्रतिबंधात्मक) से निम्नतम (सबसे अधिक प्रतिबंधात्मक) तक वर्णित है।
1. openऔरpublic
एक इकाई को परिभाषित मॉड्यूल (लक्ष्य) के बाहर उपयोग करने के लिए सक्षम करें। आप सार्वजनिक इंटरफ़ेस को किसी फ़्रेमवर्क में निर्दिष्ट करते समय आमतौर पर उपयोग openया publicएक्सेस करते हैं।
हालाँकि, openपहुँच केवल कक्षाओं और वर्ग के सदस्यों पर लागू होती है , और यह publicनिम्नानुसार पहुँच से भिन्न होती है:
public कक्षाओं और वर्ग के सदस्यों को केवल परिभाषित मॉड्यूल (लक्ष्य) के भीतर ही उपवर्गित और ओवरराइड किया जा सकता है।
open कक्षाओं और वर्ग के सदस्यों को परिभाषित मॉड्यूल (लक्ष्य) के भीतर और बाहर दोनों ही उपवर्गित और अधिभूत किया जा सकता है।
// 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