Swift Academy · درس

كيف تحسب ARC المراجع

تعرّفوا إلى ما تفعله ARC أثناء الترجمة، واستدعاءات retain وrelease، وأعمار الكائنات.

الدرس 1 من 412 خطوة

كيف تحسب ARC المراجع درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.

مرحبًا

تدير Automatic Reference Counting (ARC) ذاكرة مثيلات class. ويساعدكم فهم طريقة عده للمراجع على كتابة شيفرة خالية من تسربات الذاكرة.

ما الذي يفعله ARC

يتتبع ARC عدد المراجع *القوية* التي تشير إلى كل مثيل من class. وعندما يصل العدد إلى الصفر، يستدعي `deinit` ويحرر الذاكرة — تلقائيًا.

المراجع القوية

```swift var a: Dog? = Dog(name: "Rex") // count = 1 var b = a // count = 2 a = nil // count = 1 b = nil // count = 0 → deinit ```

يعمل ARC في وقت الترجمة

يُدرج ARC استدعاءات retain وrelease في وقت الترجمة — وليس أثناء التشغيل مثل جامع القمامة. وهذا يعني: • لا توجد فترات توقف بسبب GC • إلغاء تخصيص حتمي • زيادة طفيفة في حجم الشيفرة بسبب استدعاءات retain وrelease

خطر دورة المراجع القوية

```swift class Node { var next: Node? } var n1: Node? = Node() var n2: Node? = Node() n1?.next = n2 n2?.next = n1 // cycle! n1 = nil; n2 = nil // both stuck at count=1 — leaked! ```

العد باستخدام متغيرات متعددة

```swift class Engine {} var car1: Engine? = Engine() // count = 1 var car2 = car1 // count = 2 var car3 = car2 // count = 3 car1 = nil // count = 2 car2 = nil // count = 1 // Engine still alive — car3 holds it car3 = nil // count = 0 → deinit ```

ARC في المجموعات

```swift var dogs: [Dog] = [] dogs.append(Dog(name:"A")) // count = 1 dogs.append(Dog(name:"B")) // count = 1 each dogs.removeAll() // both deinit called ```

لا ينطبق ARC على أنواع القيم

لا تخضع structs وenums وtuples لعد المراجع: ```swift struct Point { var x, y: Double } // no retain/release var p1 = Point(x:1,y:2) var p2 = p1 // copy — no ARC ```

مراقبة ARC باستخدام deinit

```swift class Cat { let name: String init(name: String) { self.name = name; print("\(name) born") } deinit { print("\(name) deallocated") } } var c: Cat? = Cat(name: "Luna") c = nil // "Luna deallocated" printed ```

أداء ARC مقارنةً بـ GC

• GC: يوقف التنفيذ دوريًا لإجراء التجميع؛ مع مفاضلة بين معدل المعالجة والزمن الكامن • ARC: يلغي التخصيص فور وصول العدد إلى 0؛ من دون فترات توقف • تكلفة ARC: يضيف كل إسناد عبر مرجع قوي زوجًا من عمليتي retain وrelease

تحقق سريع

متى يستدعي ARC `deinit` ويحرر ذاكرة الكائن؟

مراجعة

أهم النقاط: • يتتبع ARC المراجع القوية إلى مثيلات class • العدد 0 → استدعاء `deinit` → تحرير الذاكرة • يعمل ARC في وقت الترجمة — من دون فترات توقف بسبب GC • لا تدير ARC أنواع القيم (struct وenum) • تمنع الدورات وصول العدد إلى 0 → استخدموا weak أو unowned التالي: دورات الاحتفاظ.
البدء مجانًا

تعلم Swift مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
122
الدروس
409

الأسئلة الشائعة

هل درس «كيف تحسب ARC المراجع» مجاني؟

نعم — نص درس «كيف تحسب ARC المراجع» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.

ماذا ستتعلم في «كيف تحسب ARC المراجع»؟

تعرّفوا إلى ما تفعله ARC أثناء الترجمة، واستدعاءات retain وrelease، وأعمار الكائنات. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟

لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «كيف تحسب ARC المراجع»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟

نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. كيف تحسب ARC المراجع
  2. دورات الاحتفاظ: الأسباب والكشف
  3. مراجع weak وunowned
  4. قوائم التقاط الإغلاقات و[weak self]
← العودة إلى Swift Academy