مقدمة حول Access Control :

فهو مهم لحماية الكود البرمجي الخاص بك من الوصول اليه من اي مكان سواء من اي مكون من مكونات المشروع البرمجي ام من خارجه بحيث تستطيع منع الوصول او التحكم بمستوى حماية المتغيرات او الكلاسات او الخصائص …. الخ

انواع ال Access Control :

النوع الاول Open access and public access (الاقل تقييداً ) :

open : هو النوع الاعلى وصولاً والاقل تقييداً , بحيث لو عرفنا كلاس او اي مكون على انه open ف يمكننا الوصول اليه من اي موديول او سورس فايل في المشروع ويمكن عمل override  لجميع مكونات هذا الكلاس ايضاً .

Public : هو نفس خصائص ال open لكنيمكن الوصول اليه من اي مكان لكن لا يمكن عمل override من خارج الموديول الموجود به .

مثال 1:

}()open func dummyFunction
("print("My type is open so anyone can override me
{
في هذا المثال سيقبلها الكومبايلر ولن يظهر اي خطأ . لانه يمكن عمل override  من خارج الموديول او من داخله
}()public func tempFunction
("print("My type is public so no one can override me
{
في هذا المثال سيظهر خطأ . لانه لا يمكن عمل override من خارج الموديول.
مثال 2:

//module 1
{}()public func A
{}()open func B

//module 2
override func A(){} // error
override func B(){} // success
 

النوع الثاني internal :

وهو النوع ال  default في الوصول للمكونات , بحيث يمكن الوصول اليها من اي مكان داخل نفس الموديول .

 

النوع الثالث private (الاكثر تقييداً ) :

هذا النوع اكثر مستوى حماية واكثر تقييداً في الوصول للمكونات بحيث يسمح فقط بالوصول للعنصر المعرف ك private  من داخل ال فايل سورس فقط .

مثال :

}class A
"private var myName = "iOS Developer
}
A().myName 
سوف يظهر خطأ عند استدعائها من خارج السورس فايل المعرف بها .