الأدوات ، جزء من Xcode ، مصممة بشكل أساسي لتطبيقات iOS و MacOS و WatchOS و TVOS. في حين أنه فعال بشكل لا يصدق لاكتشاف تسرب الذاكرة في هذه المنصات باستخدام أدوات مثل أداة التسرب وتصحيح الأخطاء الرسم البياني للذاكرة ، فإن تطبيقها المباشر على تطبيقات MVVMCross محدودة. MVVMCROSS هو إطار عمل عبر المنصات يسمح بالتطوير للمنصات المتعددة ، بما في ذلك Android و iOS.
ومع ذلك ، إذا كنت تقوم بتطوير تطبيق MVVMCROSS لنظام التشغيل iOS ، فيمكنك استخدام الأدوات لتتبع تسرب الذاكرة في الوقت الفعلي لجزء iOS من تطبيقك. هنا كيف:
استخدام أدوات لتطبيقات iOS MVVMCROSS
1. أدوات الإطلاق: ابدأ بفتح مشروعك في Xcode وتحديد المنتج> ملف تعريف. هذا سوف يطلق الأدوات.
2. اختر قالب التسريبات: في مربع حوار اختيار القالب ، اختر قالب التسربات ضمن قسم الذاكرة. تم تصميم هذا القالب خصيصًا للكشف عن تسرب الذاكرة.
3. قم بتشغيل تطبيقك: انقر فوق زر السجل لبدء التنصت على تطبيقك. تتفاعل مع تطبيقك كما تفعل عادة ، خاصة التركيز على المناطق التي تشك في أن تسرب الذاكرة قد تحدث.
4. تحليل النتائج: بعد الانتهاء من تفاعلاتك ، أوقف التسجيل. ستعرض الأدوات رسم بياني يوضح استخدام الذاكرة بمرور الوقت. إذا كانت هناك تسرب ذاكرة ، فسترى زيادة في استخدام الذاكرة دون انخفاضات المقابلة عندما يجب تخصيص الكائنات. أسفل الرسم البياني ، ستجد قائمة بكتل الذاكرة التي تم تسريبها مع آثار المكدس التي تشير إلى مكان تخصيص التسريبات.
5. تحديد وإصلاح التسريبات: استخدم آثار المكدس لتحديد مصدر التسريبات في الكود الخاص بك. تشمل المشكلات الشائعة دورات الاحتفاظ ، حيث تشهد الكائنات إشارات قوية إلى بعضها البعض ، مما يمنع تخصيص التخصيص. يتضمن تثبيتها كسر دورات الاحتفاظ ، غالبًا باستخدام المراجع الضعيفة أو غير المملوكة.
قيود على المنصات غير IOS
بالنسبة لتطبيقات MVVMCROSS التي تستهدف منصات أخرى غير iOS (مثل Android) ، لا يمكن استخدام الأدوات مباشرة. بدلاً من ذلك ، ستحتاج إلى استخدام أدوات خاصة بالمنصة للكشف عن تسرب الذاكرة:
- Android: استخدم أدوات مثل Memory Memory من Android Studio أو مكتبات الطرف الثالث مثل LeakCanary.
- منصات أخرى: استخدم أدوات أو مكتبات الذاكرة الخاصة بالذاكرة.
باختصار ، على الرغم من أن الأدوات فعالة للغاية لاكتشاف تسرب الذاكرة في تطبيقات iOS ، بما في ذلك تلك التي تم إنشاؤها باستخدام MVVMcross لنظام التشغيل iOS ، فإنها لا تنطبق على المنصات غير IOS. لتطوير المنصات عبر المنصات ، يجب عليك استخدام أدوات خاصة بكل منصة مستهدفة.
الاستشهادات:[1] https://www.netguru.com/blog/what-are-ios-memory-leaks-and-how-to-detect-them
[2]
[3] https://stackoverflow.com/questions/38592689/memory-leak-check-in-real-time-application
[4] https://www.kodeco.com/books/swiftui-cookbook/v1.0/chapters/9-finding-memory-leaks-using-instruments
[5] https://stackoverflow.com/questions/27008035/mvvmcross-memory-leak-because-of-not-disposed-viewmodels
[6] https://forums.ni.com/t5/labview/get-object-memory-leak/td-p/4276905
[7] https://forums.developer.apple.com/forums/thread/770061
[8] https://github.com/mvvmcross/mvvmcross/issues/2884