0Pricing
Swift Academy · درس

عمليات التهيئة وdeinit (الفئات)

أنشئ عمليات تهيئة designated وconvenience، وقدّم قيمًا افتراضية، واستخدم failable init عند الحاجة، وافهم عمليات إنهاء تهيئة الفئات.

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

نظرة عامة

يتناول هذا الدرس المهيئات المعيّنة مقابل المهيئات convenience، والقيم الافتراضية، والمهيئات القابلة للفشل init، وdeinit في الأصناف.

أساسيات تهيئة البنى

تحصل البنى على مهيئ أعضاء. وفّر قيمًا افتراضية لتبسيط الاستدعاءات.

struct User {
    var name: String = "Guest"   // default value
    var age: Int

    // memberwise init is synthesized: User(name:age:)
}
let u1 = User(name: "Ada", age: 20)
let u2 = User(age: 0)            // uses default name
print(u1.name, u2.name)

المهيئ المعيّن

يضمن المهيئ المعيّن تعيين جميع الخصائص المخزنة قبل استخدامها.

class Person {
    let name: String
    let id: Int

    // Designated initializer: fully initializes stored properties
    init(name: String, id: Int) {
        self.name = name
        self.id = id
    }
}
let p = Person(name: "Bob", id: 1)
print(p.name, p.id)

مهيئ convenience

يجب أن تفوّض مهيئات convenience إلى مهيئ مُعيّن في الصنف نفسه.

class Rectangle {
    var width: Double
    var height: Double

    // Designated
    init(width: Double, height: Double) {
        self.width = width
        self.height = height
    }

    // Convenience must call a designated initializer
    convenience init(square side: Double) {
        self.init(width: side, height: side)
    }
}
print(Rectangle(square: 3).width)

المهيئ القابل للفشل

استخدم init? للمدخلات التي قد تفشل عملية التحقق منها. وتكون النتيجة اختيارية.

struct Email {
    let value: String
    init?(_ raw: String) {
        guard raw.contains("@") else { return nil } // fail to initialize
        self.value = raw
    }
}
print(Email("a@b.com")?.value ?? "invalid")
print(Email("not email")?.value ?? "invalid")

المهيئ النهائي

لا تحتوي سوى الأصناف على deinit، الذي يُستدعى عند إلغاء تخصيص المثيل (ARC).

class TempResource {
    let id: Int
    init(id: Int) { self.id = id }
    deinit { print("Releasing resource", id) }
}
do {
    let r = TempResource(id: 42)
    print("Using", r.id)
} // r goes out of scope; ARC may call deinit here

المهيئ المعيّن مقابل convenience

تحقق سريع: إلى أي مهيئ يجب أن تستدعي مهيئات convenience في النهاية؟

مراجعة

مراجعة: استخدم المهيئات المعيّنة لتعيين جميع الخصائص، وأضف مهيئات convenience لتوفير استدعاءات أسهل، وفكّر في استخدام init? للتحقق، وتنفّذ الأصناف عملية التنظيف في deinit.

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

هل درس «عمليات التهيئة وdeinit (الفئات)» مجاني؟

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

ماذا ستتعلم في «عمليات التهيئة وdeinit (الفئات)»؟

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

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

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

كم من الوقت يستغرق درس «عمليات التهيئة وdeinit (الفئات)»؟

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

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

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

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

  1. Structs مقابل Classes والخصائص وعمليات التهيئة
  2. الخصائص المخزنة مقابل المحسوبة والمراقبات
  3. عمليات التهيئة وdeinit (الفئات)
← العودة إلى Swift Academy