当前位置:  开发笔记 > 编程语言 > 正文

iPhone设备与iPhone模拟器

如何解决《iPhone设备与iPhone模拟器》经验,为你挑选了4个好方法。

我听说过应用程序在模拟器上无法正常工作,但在实际的iPhone设备上正常工作.有没有人经历过在模拟器中完美运行但在实际iPhone设备上没有运行的应用程序?



1> Kristopher J..:

文件名在iPhone上区分大小写,但在模拟器中不区分大小写.

因此,例如,如果您尝试使用加载图像UIImage *iconImage = [UIImage imageNamed:"MyIcon.png"],但您的资源实际上名为"myicon.png",那么它将在模拟器上运行,但不在设备上运行.


毫无疑问,这是模拟器中的一个错误.模拟器应该模拟设备上会发生什么."哦,Mac文件系统不区分大小写"的借口就是:借口.Apple可以轻松解决这个问题.
我不认为他们会认为这是一个错误.iPhone的文件系统并不打算与Mac相同,而Mac的文件系统由于历史原因不区分大小写.
大多数基于UNIX的系统都有区分大小写的文件系统.Mac OS X在这方面"很奇怪",并且这样做是为了保持与OSX前Mac系统的兼容性.iOS没有理由匹配它.

2> Robert Gould..:

如果您的应用程序是图形密集型的,比如说游戏,那么模拟器的性能并不像硬件那样.您的应用程序可能会很平滑并且在模拟器上运行良好,但在硬件上它可能会爬行,除非您知道自己在做什么.您可以轻松地在模拟器和硬件之间从60fps到3fps.


我已经看到很多情况下,iPad模拟器中的动画不会100%平滑,但在设备上绝对没问题.在Simulator中,Core Animation的性能总是更好,您应该始终在实际设备上进行测试.
我看到相反的情况:我的应用程序会在模拟器上爬行,但在设备上运行正常.我认为这是由于MacBook的图形功能不佳; 使用更好的Mac可能会更好.
克里斯托弗,听起来不对.根据我的基准测试,我的第一代(白色)Core 2 Duo MacBook可以在iPhone中以每秒9X的速度推动OpenGL.也许你有一个线程锁定问题,干扰你的渲染.
使用Cocos2d我在模拟器上平均30 fps.当我在真正的iPad上运行相同的应用程序时,我的平均速度为60 fps.

3> iforce2d..:

评估函数/构造函数参数的顺序是不同的:

int i = 0;

int f() { return ++i; }

int a, b;

int test(int p1, int p2) {

    a = p1;

    b = p2;

}

test( f(), f() );

//simulator: a = 2, b = 1

//device: a = 1, b = 2


订单实际上是未定义/依赖于实现的.因此,如果使用两个不同版本的编译器,则可以在同一平台上看到不同的行为.

4> iforce2d..:

三角函数可能会返回不同的结果:

float a = cosf( 0.108271248639 );   
printf("%.12f", a);

//simulator: 0.994144439697
//device:    0.994144380093

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有