Monotouch ilovasi StackTrace yoki jurnallarsiz ishlamay qolmoqda (Destruktor hech qachon chaqirilmagan)

Mening MonoTouch ilovam ishlamay qoladi va men nima qilishni bilmayman. Shu nuqtada men hamma narsani sinab ko'rgandek his qilyapman. Menda RootViewController bor, u cheksiz miqdordagi vewcontrollerlarga o'tadi. Har safar o'tish sodir bo'lganda, men avvalgi ViewController-da dispose-ni qo'lda chaqiraman va yangisini ko'rsataman.

Bu menga xotira oqishiga o'xshaydi, chunki dastur 20-40 ta ViewControllers ichida ishlamay qoladi va qo'ldan oldin yanada sustlashadi.

  1. MonoTouch ilovamning xotiradan qanday foydalanishini qurilmada qanday koʻrishim mumkin? (Simulyatorda buzilmaydi)

  2. Nima uchun ishlamay qolganligini aniqlashning boshqa diagnostik usullari bormi?

Har qanday yordam minnatdor bo'ladi.

YANGILASH Men VC-ga quyidagilarni qo'shdim.

~TargetPromptController(){
    Console.WriteLine("TargetPromptController Released from memory!");
 }

Va hech qachon chaqirilmaydi.


person Chris Kooken    schedule 12.03.2011    source manba


Javoblar (2)


C# GC klassi sizga ishlatilayotgan xotiraning umumiy miqdorini ko'rsatishi mumkin, lekin juda noto'g'ri va asosan noto'g'ri. Ammo u sizga xotiradan foydalanish ortib borayotganini, kamayib borayotganini yoki barqarorligini aytishi mumkin. Umuman olganda, men GC.Collect dasturini bajarayotganda undagiga qaraganda ko‘proq muammolarga duch keldim. Shuning uchun mening umumiy taklifim bu usuldan foydalanmaslikdir.

Siz bu yerda tasvirlangan usullardan foydalangan holda qurilmada disk raskadrovka qilishingiz mumkin. Biroq, men bu borada muammoga duch keldim va agar siz qurilmani nosozliklarni tuzatish bilan bog'liq muammolarga duch kelsangiz, Monotouch bilan bog'lanishingizni maslahat beraman.

Muammo shundaki, Monotouch Dispose-ga qo'ng'iroq qilishingizga qaramay, ViewController-ni xotirada saqlamoqda. List turidagi xususiyat yarating va VC-laringizni u erda saqlang. Bu MonoTouch uchun foydalanilmagan VClarni aniqlash va to'plashni osonlashtirishi mumkin. Bundan tashqari, VC tarkibini kollektsiyadan chiqarishdan oldin iloji boricha olib tashlang. Men Monotouch-ning ota-ona ob'ektini yo'q qilgan bolalar ob'ektlariga havolalar saqlaganini ko'rdim.

Umuman olganda, Monotouch etuk mahsulot emas va siz ularning qo'llab-quvvatlash jamoasi bilan bog'lanishga odatlanishingiz kerak bo'ladi. Va iltimos, barchamiz o'rganishimiz uchun yechimingizni shu yerga joylashtiring! :)

person Simeon    schedule 12.03.2011

Keraksiz narsalarni utilizatsiya qilishga ishonch hosil qiling. Garchi mono touch bularning bir qismini siz uchun qilsa ham, men buni o'z kodimda qilish yaxshiroq deb bilaman. Kod ko'plab bir martalik ob'ektlarni yaratadigan tsikllarda keng ko'lamli tartiblar davomida har doim GCni majburlang. P.S. Men Monotouchni etuk emas deb aytmagan bo'lardim. Platforma tosh!

person Keith Aymar    schedule 22.12.2011