Swift Academy · درس

الخصائص المخزّنة ومراقبو الخصائص

تعرّفوا إلى مراقبي didSet وwillSet للاستجابة للتغييرات في الخصائص.

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

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

مرحبًا

تحتفظ الخصائص المخزنة بالقيم داخل بنية أو صنف. وتتيح لك مراقبات الخصائص — `willSet` و`didSet` — الاستجابة عند تغيّر قيمة خاصية مخزنة.

الخصائص المخزنة

```swift struct Counter { var count: Int = 0 // stored, mutable let name: String // stored, immutable } ``` كل قيمة تُسند إليها باستخدام `let` أو `var` داخل نوع ما تُعد خاصية مخزنة.

مراقب didSet

```swift struct Gauge { var level: Int = 0 { didSet { print("Changed from \(oldValue) to \(level)") } } } var g = Gauge() g.level = 5 // "Changed from 0 to 5" ``` تمثل `oldValue` القيمة السابقة التي يوفرها Swift تلقائيًا.

مراقب willSet

```swift struct Slider { var value: Double = 0.5 { willSet { print("About to change to \(newValue)") } } } ``` تمثل `newValue` القيمة الواردة التي يوفرها Swift تلقائيًا. ويُستدعى `willSet` قبل الإسناد.

استخدام المراقبين معًا

```swift var temperature: Double = 20 { willSet { print("Will become \(newValue)") } didSet { print("Was \(oldValue)") } } temperature = 25 // Will become 25.0 // Was 20.0 ```

تقييد القيم باستخدام didSet

```swift var volume: Int = 50 { didSet { if volume > 100 { volume = 100 } if volume < 0 { volume = 0 } } } volume = 150 // clamped to 100 ``` هذا نمط عملي لفرض الثوابت تلقائيًا.

المراقبون في الأصناف الفرعية

تعمل مراقبات الخصائص أيضًا مع الخصائص الموروثة: ```swift class Base { var x: Int = 0 } class Child: Base { override var x: Int { didSet { print("x changed to \(x)") } } } ```

لا تعمل المراقبات أثناء التهيئة

```swift struct Model { var value: Int = 0 { didSet { print("changed") } } init(v: Int) { self.value = v } // does NOT trigger didSet } ``` لا تُستدعى المراقبات أثناء الإسناد الأولي داخل `init`.

المخزنة مقابل المحسوبة — تمييز سريع

• المخزنة: `var x: Int = 0` — تحتفظ بمساحة تخزين فعلية • المحسوبة: `var doubled: Int { x * 2 }` — تُشتق عند الوصول إليها ولا تستخدم مساحة تخزين • المراقب: يُرفق بخاصية مخزنة — ويستجيب للتغييرات لا يمكن إضافة مراقبات إلى الخصائص المحسوبة، لأنها تحتوي أصلًا على `get`/`set`.

ملاحظة حول الأداء

تضيف مراقبات الخصائص تكلفة استدعاء دالة عند كل عملية كتابة. وعند إجراء عمليات كتابة متكررة جدًا، مثل فيزيائيات حلقة اللعبة، فكّر في استخدام خاصية مخزنة عادية واستدعاء منطق التحديث صراحةً لتحقيق أداء أفضل.

تحقق سريع

أي مراقب خصائص يتيح الوصول إلى القيمة **السابقة**؟

مراجعة

أهم النقاط: • تحتفظ الخصائص المخزنة بالقيم مباشرةً • يُستدعى `willSet` قبل تخزين القيمة الجديدة، وتُوفَّر `newValue` • يُستدعى `didSet` بعد التخزين، وتُوفَّر `oldValue` • لا تُستدعى المراقبات أثناء `init` • تناسب التأثيرات الجانبية مثل تحديثات واجهة المستخدم والتسجيل والتحقق التالي: الخصائص المحسوبة.
البدء مجانًا

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

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

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

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

هل درس «الخصائص المخزّنة ومراقبو الخصائص» مجاني؟

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

ماذا ستتعلم في «الخصائص المخزّنة ومراقبو الخصائص»؟

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

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

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

كم من الوقت يستغرق درس «الخصائص المخزّنة ومراقبو الخصائص»؟

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

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

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

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

  1. المهيئات بحسب الأعضاء والمهيئات المخصّصة
  2. الخصائص المخزّنة ومراقبو الخصائص
  3. الخصائص المحسوبة في البنى
  4. الأساليب المعدِّلة ودلالات النسخ عند الكتابة
← العودة إلى Swift Academy