Actors في Swift: دليل شامل مع أمثلة عملية

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

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

ابدأ الدورة

Actors في Swift: الدليل الشامل للبرمجة المتزامنة الآمنة

1. ما هي Actors ولماذا تحتاجها؟

Actors هي مفهوم أساسي في لغة Swift، تم تقديمه في Swift 5.5، لحل واحدة من أصعب المشكلات في البرمجة: التعامل الآمن مع الحالة المشتركة القابلة للتغيير في بيئة متعددة الخيوط. قبل ظهور Actors، كان المطورون مضطرين لإدارة الأقفال (locks) والإشارات (semaphores) وقوائم الانتظار (DispatchQueue) يدويًا، مما كان يؤدي إلى أخطاء يصعب اكتشافها مثل سباقات البيانات (data races) والتوقف التام (deadlocks). توفر Actors آلية مدمجة على مستوى اللغة لعزل الحالة، مما يضمن أن الوصول إلى البيانات داخل actor يتم بشكل تسلسلي دائمًا، حتى عند الوصول إليها من عدة خيوط في وقت واحد.

الفكرة الأساسية لـ Actors هي أن كل actor يحمي حالته الخاصة. لا يمكن للكود الخارجي الوصول مباشرة إلى الخصائص المخزنة في actor — فقط من خلال دواله. يفرض مترجم Swift ذلك بدقة، ويصدر خطأ إذا حاولت قراءة أو تعديل خاصية actor من الخارج دون استخدام الكلمة المفتاحية await. هذا يجعل نموذج Actors ليس مجرد مكتبة، بل جزءًا من نظام أنواع اللغة، مما يسمح باكتشاف المشكلات المحتملة في التزامن أثناء مرحلة الترجمة، وليس أثناء التشغيل.

لماذا تحتاج هذا؟ في التطوير الحديث لتطبيقات iOS وmacOS وwatchOS وtvOS، أي تطبيق تقريبًا يتعامل مع الشبكة أو قواعد البيانات أو واجهة المستخدم، مما يتطلب عمليات غير متزامنة. تتيح لك Actors كتابة كود متزامن يسهل قراءته وصيانته وتصحيح أخطائه. إنها مفيدة بشكل خاص عند العمل مع الموارد المشتركة مثل التخزين المؤقت (caches) ومديري الحالة ومجموعات الاتصالات وأي كائنات أخرى يمكن الوصول إليها في وقت واحد من أجزاء مختلفة من التطبيق. Actors ليست مجرد "أداة أخرى"، بل هي تحول جوهري في كيفية تفكير مطوري Swift في التزامن.

2. التثبيت والإعداد

Actors هي جزء مدمج من لغة Swift بدءًا من الإصدار 5.5. لاستخدامها، لا تحتاج إلى تثبيت أي مكتبات خارجية أو حزم عبر مديري التبعيات (CocoaPods, Swift Package Manager, Carthage). كل ما تحتاجه هو مشروع مهيأ لاستخدام Swift 5.5 أو أحدث.

التحقق من إصدار Swift

تأكد من أن لديك الإصدار المناسب من المترجم. للقيام بذلك، نفذ في الطرفية (Terminal):

swift --version

يجب أن ترى سطرًا يحتوي على Swift version 5.5 أو أعلى. إذا كان الإصدار أقل، قم بتحديث Xcode (لنظام macOS) أو قم بتثبيت أحدث أدوات Swift من الموقع الرسمي.

إعداد المشروع

إذا كنت تستخدم Xcode، تأكد من أن إعدادات المشروع (Build Settings) تحتوي على معامل Swift Language Version مضبوطًا على Swift 5.5 أو أعلى. لمشاريع Swift Package Manager (SPM)، يجب أن يكون الحد الأدنى لإصدار المنصة .iOS(.v15) أو .macOS(.v12) أو .tvOS(.v15) أو .watchOS(.v8) — من هذه الإصدارات بدأت Apple الدعم الكامل لـ Actors في أطرها.

مثال على تكوين Package.swift:

// swift-tools-version:5.7
import PackageDescription

let package = Package(
    name: "MyActorProject",
    platforms: [
        .iOS(.v15),
        .macOS(.v12)
    ],
    dependencies: [],
    targets: [
        .target(
            name: "MyActorProject",
            dependencies: []),
        .testTarget(
            name: "MyActorProjectTests",
            dependencies: ["MyActorProject"])
    ]
)

كل شيء جاهز. لا حاجة لأي أوامر إضافية.

توصيات