繁体   English   中英

没有StackTrace或日志的Monotouch应用程序崩溃(从不调用析构函数)

[英]Monotouch Application Crashing with no StackTrace or logs (Destructor never called)

我的MonoTouch应用程序不断崩溃,我不知道该怎么做。 在这一点上,我觉得我已经尝试了一切。 我有一个RootViewController,它转换为无数的vewcontrollers。 每次进行传输时,我都会在之前的ViewController上手动调用dispose并显示新的。

感觉就像一个内存泄漏给我,因为应用程序崩溃了大约20-40个ViewControllers并且肯定会在手前变得更加迟钝。

  1. 如何在设备上查看MonoTouch应用程序的内存使用情况? (不会在模拟器中崩溃)

  2. 任何更多的诊断方法来弄清楚它崩溃的原因?

任何帮助将不胜感激。

更新我已将以下内容添加到我的VC中。

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

它永远不会被称为。

务必处置不需要的对象。 即使单声道触摸为你做了一些,我觉得在我的代码中做到这一点更好。 在循环中的大量例程期间始终强制GC,其中代码生成大量一次性对象。 PS我不会称Monotouch不成熟。 平台摇滚!

C#GC类可以为您提供正在使用的内存总量的指示,但是非常不准确且大多数都是错误的。 但是,它可以告诉您内存使用量是增加,减少还是稳定。 一般来说,我在做GC.Collect时遇到的问题比我没有的要多。 所以我的一般建议是不要使用那种方法。

您可以使用此处描述的技术在设备上进行调试。 但是,我遇到了问题,如果您遇到设备调试问题,建议您联系Monotouch。

您的问题可能是Monotouch将ViewController保留在内存中,尽管您调用了Dispose。 创建一个List类型的属性,并保存您的VC。 这可以使MonoTouch更容易检测和收集未使用的VC。 此外,在从集合中释放VC之前,尽可能地删除VC内容。 我已经看到Monotouch保留对我已经处理过的父对象的子对象的引用。

总而言之,Monotouch不是一个成熟的产品,您将不得不习惯联系他们的支持团队。 在这里发布您的解决方案,以便我们都可以学习! :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM