SwiftUI Series 13|تحسين أداء SwiftUI: أساليب الكتابة التي تتسبب بسهولة في توقف الصفحة
ترجع العديد من مشكلات أداء SwiftUI إلى دقة الحالة وتوقيت الحساب وخروج نطاق تحديث العرض عن السيطرة
عندما يتعلق الأمر بأداء SwiftUI، غالبًا ما يظهر حكمان متطرفان:
- “SwiftUI بطيء بطبيعته”
- “SwiftUI جيد تمامًا، لكن لا يمكنني الكتابة”
كل من هذه التصريحات فظة للغاية.
في المشاريع الحقيقية، تحدث العديد من مشكلات أداء SwiftUI بالفعل نتيجة لخروج هذه الأشياء عن نطاق السيطرة معًا:
- دقة تحديث الحالة كبيرة جدًا
- عرض التسلسل الهرمي عميق جدًا
- يتم وضع الحساب على المسار الذي يتم تحديثه بشكل متكرر
- تكاليف القائمة ورابط الصورة مرتفعة للغاية
إذن ما تحتاج حقًا إلى طرحه هو:
هل يؤدي تغيير بسيط في الصفحة إلى إعادة الحساب وإعادة الرسم بشكل أكبر من اللازم؟
1. السبب الجذري الأكثر شيوعًا لمشاكل أداء SwiftUI هو أن نطاق التحديث كبير جدًا
العديد من الصفحات عالقة. ظاهريًا، يبدو أن مكونًا معينًا ثقيل، لكنه في الواقع أقرب:
- تغيير الدولة المحلية
- ولكنه يسمح لمساحة كبيرة من الواجهة بإعادة المشاركة في العمليات الحسابية
هذا مهم بشكل خاص في واجهات المستخدم التصريحية. لأنه يقول “أعد حساب الوصف الحالي بعد تغير الحالة”.
إذا لم تتم محاذاة حدود الحالة وحدود المكونات، فسيتم تضخيم التغييرات الصغيرة إلى تحديثات واسعة النطاق.
2. يعد وضع حسابات عالية التكلفة على المسار الذي يتم تحديثه بشكل متكرر أحد أكثر الروائح الكريهة شيوعًا.
على سبيل المثال:
- القيام بالتنسيق المعقد في
body - قم بتحويل البيانات الثقيلة أثناء إنشاء العرض
- إعادة بناء نماذج العرض المعقدة في كل مرة تقوم فيها بالتحديث
هذه الأشياء غير مرئية عندما تكون كمية البيانات صغيرة. بمجرد تحديث الصفحة بشكل متكرر، سيتم تضخيم التكلفة بسرعة.
3. تعمل القوائم والصور دائمًا على تضخيم مشكلات أداء SwiftUI
لأن كلا السيناريوهين سيسمحان بما يلي:
- ارتفاع وتيرة التحديث
- المزيد من المشاهدات
- الخيط الرئيسي تحت ضغط أكبر
إذا لم تكن دقة الحالة جيدة بما فيه الكفاية، فسوف تقوم الصفحة بإسقاط الإطارات بسهولة.
4. الاستنتاج: تصبح صفحة SwiftUI عالقة، وهو ما يرتبط عادةً بفقدان دقة التحديث وتوقيت الحساب وحدود العرض.
ولكي أختصر الأمر أقول:
الأسباب الجذرية الأكثر شيوعًا لمشاكل أداء SwiftUI هي السماح لتغييرات الحالة بالتأثير على النطاق بشكل كبير، مما يسمح بإجراء حسابات عالية التكلفة على مسارات تحديث عالية التردد، وعدم إغلاق حدود الصفحات.
لذلك، فإن اتجاه التحسين الفعال حقًا هو عادةً تضييق نطاق التأثير، بدلاً من الشك في الإطار بأكمله منذ البداية.
What to read next
Want more posts about SwiftUI?
Posts in the same category are usually the best next step for reading more on this topic.
View same categoryWant to keep following #iOS?
Tags are useful for related tools, specific problems, and similar troubleshooting notes.
View same tagWant to explore another direction?
If you are not sure what to read next, return to the homepage and start from categories, topics, or latest updates.
Back home