مكتبة 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