Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Monotouch应用程序在iPad上使用更多内存?_Ipad_Xamarin.ios - Fatal编程技术网

Monotouch应用程序在iPad上使用更多内存?

Monotouch应用程序在iPad上使用更多内存?,ipad,xamarin.ios,Ipad,Xamarin.ios,我有一个基于iphonewindows的Monotouch应用程序,与iPhone和iPhone模拟器相比,它在iPad上运行时似乎使用了更多的内存 在监控了Instruments中的内存分配后,我注意到还有两个仅在iPad上实例化的实例(见下面的屏幕截图)。当对iPhone和simulator执行相同的步骤时,它们不存在。他们是一些总容量约为4MB的大人物。负责这两个实例的库是“CoreGraphics”。我能够追踪到它们何时被实例化,而我却一无所知,因为它就在ViewDidLoad完成之后。

我有一个基于iphonewindows的Monotouch应用程序,与iPhone和iPhone模拟器相比,它在iPad上运行时似乎使用了更多的内存

在监控了Instruments中的内存分配后,我注意到还有两个仅在iPad上实例化的实例(见下面的屏幕截图)。当对iPhone和simulator执行相同的步骤时,它们不存在。他们是一些总容量约为4MB的大人物。负责这两个实例的库是“CoreGraphics”。我能够追踪到它们何时被实例化,而我却一无所知,因为它就在ViewDidLoad完成之后。在ViewDidLoad最后一行的断点和屏幕上显示所有内容之间,bam!正在使用额外的4 mb。XIB是空的,因为我在代码中手动添加了所有内容,所以我无法确定在ViewDidLoad之后会发生什么,从而导致这些内容

我想追根究底,因为该应用程序已经突破了内存限制。这是在iPhone上正常工作和在iPad上快速崩溃(与内存相关)之间的区别。因此,不涉及应用程序的任何细节,是什么导致iPad实例化这些额外的CoreGraphics相关怪物,而不是在iPhone或模拟器上


结果是我的新手犯了一个错误

我所有的图像都是视网膜(两倍大小),但与正常图像一样命名为myimage.png。我猜我的iPad不支持视网膜图形,并且可能在尝试将所有视网膜图形重新调整到正常大小时不知所措


我快速编写了一个脚本,将我所有的图形重命名为myimage@2x.png然后回去把我所有的图片剪成正常大小,名字是myimage.png。在那之后,iPad成了一个快乐的露营者,大型allocs在哪里都找不到

你试过比较iPhone和iPhone4的视网膜显示吗?我猜CoreGraphics只需要在内存中为UI保留更大的位图,因为屏幕更大。我同意。CoreGraphics是包含图形上下文的框架。更大的屏幕,更多的图形存储空间。我目前还不是视网膜或iPad专家,但我不确定情况是否如此。由于它是一款iPhone应用程序,当加载到iPad中时,它的显示与iPhone显示器的显示比例相同。只有在按下“2x”按钮后,它才会填满整个屏幕,即使如此,这只是一个缩放的技巧。因此,在这方面,iPad上使用的资源并不比iPhone多或少。。我想。好吧,情节越来越复杂,事情变得越来越奇怪。我偶然发现,当通过PresentModalViewController呈现MFMailComposeViewController时,取消其限制,然后再次呈现它将清除神秘的4mb分配!我会随时通知你的。