مكتبة Swift القياسية (iOS/macOS): نظرة شاملة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مكتبة Swift القياسية (iOS/macOS): نظرة شاملة



مكتبة Swift القياسية هي مجموعة أساسية من الأنواع والبروتوكولات والوظائف المضمنة مباشرة في اللغة. توفر الوظائف الأساسية اللازمة للتطوير لنظام iOS وmacOS وwatchOS وtvOS. على عكس أطر العمل Foundation أو UIKit التي تشكل جزءًا من SDK، فإن مكتبة Swift القياسية متاحة فورًا دون الحاجة إلى استيرادات إضافية. في هذه المقالة، سنقوم بتحليل مكوناتها الرئيسية وهياكل البيانات والبروتوكولات وآليات إدارة الذاكرة بالتفصيل.



أنواع البيانات والمجموعات الأساسية



توفر Swift مجموعات قوية وآمنة من حيث النوع، محسّنة للأداء.



المصفوفات (Array)

مجموعة مرتبة من العناصر من نفس النوع. تدعم الوصول العشوائي والتغيير الديناميكي للحجم.

var numbers: [Int] = [1, 2, 3]numbers.append(4)let first = numbers[0] // 1numbers.sort()


المجموعات (Set)

مجموعة غير مرتبة من العناصر الفريدة. مثالية للتحقق من الانتماء والعمليات الرياضية.

let setA: Set<Int> = [1, 2, 3, 4]let setB: Set<Int> = [3, 4, 5, 6]let intersection = setA.intersection(setB) // {3, 4}let union = setA.union(setB) // {1, 2, 3, 4, 5, 6}


القواميس (Dictionary)

مجموعة غير مرتبة من أزواج "مفتاح-قيمة". يجب أن تكون المفاتيح قابلة للهاش (Hashable).

var capitals: [String: String] = ["روسيا": "موسكو", "الولايات المتحدة": "واشنطن"]capitals["ألمانيا"] = "برلين"if let russiaCapital = capitals["روسيا"] {    print(russiaCapital) // موسكو}


البروتوكولات: أساس عالمية Swift



مكتبة Swift القياسية مبنية على البروتوكولات التي تحدد واجهة مشتركة لأنواع مختلفة.



  • Equatable — يسمح بمقارنة المثيلات باستخدام ==.
  • Hashable — مطلوب لاستخدام النوع كمفتاح قاموس أو عنصر مجموعة.
  • Comparable — يتيح ترتيب الكائنات (<, >, <=, >=).
  • Codable — يجمع بين Encodable وDecodable للتسلسل إلى JSON وProperty List وتنسيقات أخرى.
  • CaseIterable — يوفر تلقائيًا مجموعة من جميع قيم التعداد.


مثال على استخدام Codable

struct User: Codable {    let id: Int    let name: String    let isActive: Bool}

let json = """{ "id": 42, "name": "إيفان", "isActive": true}""".data(using: .utf8)!

let decoder = JSONDecoder()if let user = try? decoder.decode(User.self, from: json) { print(user.name) // إيفان}


إدارة الذاكرة: ARC وCopy-on-Write



تستخدم Swift العد المرجعي التلقائي (ARC) لإدارة ذاكرة الأنواع المرجعية (الفئات). بالنسبة للهياكل والتعدادات، تنطبق دلالات نسخ القيمة، ولكن مع تحسين Copy-on-Write (COW) للمجموعات.



var array1 = [1, 2, 3]var array2 = array1 // طالما لم نغير — البيانات مشتركةarray2.append(4)    // هنا يحدث النسخ الفعلي (COW)print(array1.count) // 3 — المصفوفة الأصلية لم تتغير


القوالب العامة (Generics)



تسمح Generics بكتابة دوال وأنواع مرنة وقابلة لإعادة الاستخدام دون فقدان الأداء.



func swapTwoValues<T>(_ a: inout T, _ b: inout T) {    let temporaryA = a    a = b    b = temporaryA}

var x = 10var y = 20swapTwoValues(&x, &y) // x = 20, y = 10


الأنواع الاختيارية (Optionals)



العمل الآمن مع القيم المفقودة — إحدى الميزات الرئيسية لـ Swift. تمنع Optionals استثناءات المؤشر الفارغ.



var optionalString: String? = "مرحباً"// Optional bindingif let unwrapped = optional                    

توصيات