2011-11-29 67 views
2

Apple的iOS模拟器非常棒 - 我一直都在使用它,因为它比在真实设备上运行要容易得多。但它有一些缺点,其中之一就是太强大了。因为它可以访问计算机的资源,所以我经常发现在iOS模拟器上运行良好(平稳)的代码在真实设备(在这种情况下,即我的iPhone 4)上运行得并不顺畅。是否可以让iOS模拟器更像真正的iPhone?

此标题问题说明了一切,但我会再说一遍:是否可以让iOS模拟器像真正的iOS设备一样运行?

回答

4

您可以使用“好”或“renice只能”命令来改变低模拟器的调度优先级,但它可能会帮助不大,除非是在同一时间运行一些其他的,更高优先级的任务。

就个人而言,我想你会离开花费时间获得设备上运行的窍门更好。这确实不是那么难,而且最终你对应用的真实性能有了更好的了解。

+0

嗯......有趣。也许我会尝试,同时在我的笔记本电脑上运行每个应用程序...... –

0

不,这就是苹果公司销售开发许可证的方式。

您可以限制CPU和使用某种工具来阻止它的RAM,但充其量是一个猜测。

+0

我想这从商业角度来看是有意义的 - 你知道任何这样的公用事业吗? –

+0

我想知道是否有可能进入疯狂的程度,创建处理能力和RAM有限的虚拟机。 – ScarletAmaranth

+0

这听起来合理,费时:)但这可能是我唯一的选择。 –

1

将这个在您的应用程序,你让使用大量内存空间的几个地方。这会产生内存警告并导致iOS释放视图,并尝试释放内存。您可以在同一时间;-)

#if TARGET_IPHONE_SIMULATOR 
    SEL memoryWarningSel = @selector(_performMemoryWarning); 
    if ([[UIApplication sharedApplication] respondsToSelector:memoryWarningSel]) { 
     NSLog(@"simulated memory warning"); 
     [[UIApplication sharedApplication] performSelector:memoryWarningSel]; 
    } 
#endif 

所有viewDidUnload错误也许在这里和那里添加一些延迟的好办法,但你必须决定在哪里,有多少延迟。这里是一个延时100ms:

#if TARGET_IPHONE_SIMULATOR 
{ 
    const struct timespec delay = { 0, 100000000 }; 
    nanosleep(&delay, NULL); 
} 
#endif 
+0

我不确定我是否理解这将如何使模拟器像真正的设备一样工作。 –

+0

它仍然不会像真正的设备一样工作,但是在真实的设备上,您的内存有限,并且偶尔会发出内存警告,并且必须正确处理它们。真正的设备也比SIM慢,并且可以使用SIM中的时间延迟策略来减慢发生速度过快的操作。最好的解决方案是开发和测试模拟和各种设备(3GS,4S,iTouch,iPad等) – progrmr

+0

啊我看到了...我会尝试! –

1

你必须既基准实际设备和仿真器上的特定的应用,如对差分你的应用程序做了什么变化。

说模拟器措施20X您的代码更快。您可以尝试在应用程序委托中创建一个重复的NSTimer,并且在定时器回调中每隔0.05秒纳入主线程47.5毫秒(或其他间隔和比率),然后查看是否会将模拟应用程序降低到大约应用在您的设备上。您可能不得不尝试试验和错误,以获取适量的“泥浆”,以使您的应用程序无法使用。

在计时器回调,你也可以监控您的应用程序的VM脏脚印,如果它扩展了一定数量终止该应用。

相关问题