يعد استخدام تصحيح الأخطاء الرسم البياني للذاكرة في XCode طريقة فعالة لتحديد دورات الاحتفاظ في تطبيقات MVVMCROSS. إليك دليل خطوة بخطوة حول كيفية القيام بذلك:
مقدمة إلى رسم بياني الرسم البياني للذاكرة
يعد Debugger الرسم البياني للذاكرة أداة قوية في Xcode تساعد المطورين على تحديد تسرب الذاكرة والاحتفاظ بالدورات من خلال تصور علاقات الكائنات في الذاكرة. يوفر لقطة لحالة الذاكرة الحالية ، والتي توضح الكائنات التي يتم الاحتفاظ بها وكيفية الرجوع إليها.
خطوات لتحديد دورات الاحتفاظ
1. قم بتشغيل تطبيقك: ابدأ بتشغيل تطبيق MVVMCROSS في XCODE. تأكد من أنك تختبر الجزء المحدد من التطبيق حيث تشك في أن دورة الاحتفاظ بها قد تحدث.
2. افتح أخطاء الرسم البياني للذاكرة: بمجرد تشغيل التطبيق الخاص بك ، افتح تصحيح الأخطاء الرسم البياني للذاكرة من خلال النقر على زر العقدة الثلاثة الموجود بين أزرار التصحيح المرئي وأزرار محاكاة الموقع في شريط أدوات XCode. سيؤدي ذلك إلى التقاط لقطة ذاكرة لحالة التطبيق الحالية.
3. قم بتحليل لقطة الذاكرة: في اللوحة اليسرى من تصحيح الرسم البياني للذاكرة ، سترى قائمة بالكائنات الموجودة حاليًا في الذاكرة ، إلى جانب عدد مثيلات كل فئة. ابحث عن الأشياء التي لا ينبغي أن تكون هناك أو التي لها عدد كبير من الحالات بشكل غير متوقع.
4. تحديد دورات الاحتفاظ: حدد كائنًا من اللوحة اليسرى لعرض الرسم البياني المرجعي. سيظهر الرسم البياني مراجع قوية كخطوط جريئة ومراجع غير معروفة (والتي يمكن أن تكون ضعيفة أو قوية) كخطوط رمادية فاتحة. يشار إلى دورة الاحتفاظ بواسطة حلقة في الرسم البياني حيث تشير الكائنات إلى بعضها البعض بطريقة تمنعهم من التعامل.
5. التنقل في الرسوم البيانية للكائن: لتعقب مصدر دورة الاحتفاظ ، قد تحتاج إلى التنقل من خلال الرسوم البيانية للكائنات المتعددة. ابدأ بالكائن الذي تم تسريبه واتبع المراجع للخلف للعثور على الكائن الأصل الذي يحتفظ به.
6. فحص تفاصيل الكائن: عند النقر فوق عقدة في الرسم البياني ، ستوفر لوحة التفتيش معلومات مفصلة حول الكائن ، بما في ذلك خصائصها وعلاقاتها. يمكن أن يساعدك هذا على فهم سبب الاحتفاظ بالكائن.
7. كرر التدفقات الأساسية: لتأكيد دورة الاحتفاظ ، كرر التدفق الأساسي أو الميزة في تطبيقك عدة مرات ، مع أخذ لقطات الذاكرة بعد كل تكرار. إذا زاد عدد حالات كائن معين بمرور الوقت ، فقد يشير إلى دورة الاحتفاظ.
8. إصلاح دورة الاحتفاظ: بمجرد تحديد مصدر دورة الاحتفاظ بها ، يمكنك إصلاحها عن طريق تغيير المراجع القوية إلى المراجع الضعيفة أو غير المملوك عند الاقتضاء. على سبيل المثال ، في عمليات الإغلاق ، استخدم `[ضعف الذات]` لتجنب التقاط "الذات" بقوة.
مشترك سيناريوهات دورة في MVVMCROSS
في تطبيقات MVVMCROSS ، تحدث دورات الاحتفاظ غالبًا بسبب المراجع القوية بين نماذج العرض ووجهات النظر أو بسبب الإغلاق التي تلتقط نماذج العرض أو المشاهدات بقوة. على سبيل المثال ، إذا كان نموذج العرض يحمل إشارة قوية إلى العرض ، كما أن العرض يحمل مرجعًا قويًا إلى نموذج العرض ، فلا يمكن تعويض أي منهما.
لمنع مثل هذه الدورات ، تأكد من تنظيف نماذج العرض الخاصة بك بشكل صحيح عند رفض المشاهدات. استخدم أساليب دورة الحياة التي توفرها MVVMCROSS ، مثل "اختفت () ، لإطلاق الموارد وكسر أي مراجع غير ضرورية.
من خلال اتباع هذه الخطوات وفهم كيفية تصور علاقات الكائنات في تصحيح الأخطاء الرسم البياني للذاكرة ، يمكنك تحديد الدورات وإصلاحها بشكل فعال في تطبيقات MVVMCross الخاصة بك.
الاستشهادات:[1] https://dodoordash.engineering/2019/05/22/ios-memory-leaks-and-bred-cycle-detection-using-xcodes-memory-graph-debugger/
[2] https://careersatdoordash.com/blog/ios-memory-leaks-and-bred-cycle-detection-using-xcodes-memory-graph-debugger/
[3]
[4] https://forums.developer.apple.com/forums/thread/112268
[5] https://www.mvvmcross.com/mvvmcross-5-release/
[6]
[7] https://moldstud.com/articles/p-swift-memory-management-tips-for-tain-cycle-issues
[8] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[9]