تجنب إعادة الرسم غير الضرورية
حدّد نطاق الحالة لتقليل إعادة تقييم body
تجنب إعادة الرسم غير الضرورية درس مجاني في SwiftUI Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SwiftUI Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SwiftUI Academy 4 دروس في المجموع.
تكلفة التحديث الزائد
إذا أجبر تغيير صغير عرضًا ضخمًا على إعادة البناء، فسيصبح التمرير متقطعًا. والحل هو إبقاء كل عملية إعادة رسم صغيرة قدر الإمكان.
ضعوا الحالة حيث تتغير
ضعوا @State في أصغر عرض يملكه. عندها سيعيد ذلك العرض الصغير التقييم فقط عندما تتغير القيمة، لا العنصر الأب الكبير.
struct Counter: View {
@State private var count = 0
}استخراج العروض الفرعية
قسّموا body كبيرًا إلى عروض فرعية أصغر. عندها تستطيع SwiftUI إجراء المقارنة التفاضلية وتخطي الأجزاء التي لم تتغير مدخلاتها.
var body: some View {
HeaderView()
FeedView()
}مرّروا ما تحتاجون إليه فقط
مرّروا إلى العرض الفرعي القيم التي يقرأها فقط. فكلما قل عدد تبعيات العرض، قلّت حاجته إلى إعادة الحساب.
RowView(title: item.title)راقبوا قراءات Observable
مع نماذج @Observable، لا يتحدث العرض إلا عند تغيير الخصائص المحددة التي يلمسها. اقرأوا الحقول التي تعرضونها فقط.
تجنبوا كائنات الحالة واسعة النطاق
إن قراءة نموذج ضخم واحد في كل مكان تجعل كل تغيير ينتشر إلى الخارج. قسّموه بحيث يعتمد كل عرض على جزء محدود من البيانات.
احذروا عمليات الإغلاق التي تلتقط Self
يوسّع الإغلاق الذي يقرأ خصائص كثيرة تبعيات العرض. التقطوا فقط القيمة المحددة التي يحتاج إليها الإجراء فعلًا.
انقلوا العمل الثقيل خارج body
لا تنفذوا حسابات مكلفة داخل body مطلقًا. فهو يُشغَّل كثيرًا، لذا خزّنوا النتائج في الحالة أو في نموذج، واقرؤوا القيمة الجاهزة.
استخدموا let للثوابت
عرّفوا المدخلات التي لا تتغير باستخدام let. فالخصائص الثابتة لا تؤدي أبدًا إلى تشغيل التحديثات، وتوضح أنها لا يمكن أن تتسبب في إعادة الرسم.
struct Badge: View {
let label: String
}العروض القابلة للمقارنة
بالنسبة إلى العروض الفرعية المكلفة، اجعلوها Equatable حتى تتمكن SwiftUI من مقارنة المدخلات وتخطي إعادة التقييم عندما تتطابق.
ExpensiveView(data: data)
.equatable()حسّنوا ما تقيسونه
لا تعتمدوا على التخمين. حدّدوا نطاق الحالة، واستخرجوا العروض، ثم قيسوا للتأكد من أنكم قلّصتم فعلًا عمليات إعادة الرسم المسببة للمشكلة.
تحقق سريع
أين ينبغي أن تضعوا الحالة للحد من عمليات إعادة الرسم؟
مراجعة: تجنب إعادة الرسم
تعلمتم تضييق نطاق الحالة، واستخراج العروض الفرعية، وتمرير الحد الأدنى من البيانات، والحفاظ على خفة body. فالتبعيات الأصغر تعني عمليات إعادة رسم أقل. ⚡
تعلم Swift مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «تجنب إعادة الرسم غير الضرورية» مجاني؟
نعم — نص درس «تجنب إعادة الرسم غير الضرورية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SwiftUI Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SwiftUI Academy 4 دروس في المجموع.
ماذا ستتعلم في «تجنب إعادة الرسم غير الضرورية»؟
حدّد نطاق الحالة لتقليل إعادة تقييم body تتمرن على SwiftUI Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SwiftUI Academy؟
لا تُشترط خبرة سابقة. SwiftUI Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «تجنب إعادة الرسم غير الضرورية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SwiftUI Academy هذا؟
نعم. كل درس في SwiftUI Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- كيف تعيد SwiftUI حساب الواجهات
- تجنب إعادة الرسم غير الضرورية
- التحميل الكسول للمحتوى الثقيل
- تحليل الأداء باستخدام Instruments