2010-06-27 74 views
1

在所有已更新至iOS4的iPhone(我们选中)上,我们的应用程序的行为与以前的操作系统版本(3.1.3)不同。首先也是最大的问题是,在3G上(但不是在3GS上),任何UIAlertView冻结了应用程序 - 实际上它看起来应用程序损失集中在UIAlertView,但UIAlertView也没有得到重点。我必须注意到我的应用程序正在使用OpenGL ES 1.1。iOS4打破我的应用程序

其他错误看起来像一些变量获得不同的初始设置。例如,颜色选择器与黄颜色开始,而不是黑色,多点触控计数器给出错误的结果,等等。

即使这样冻结的应用程序:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"Please read help before using Facebook/Twitter/Flickr" 
               delegate:self 
             cancelButtonTitle:@"OK" 
             otherButtonTitles:nil, nil]; 
[alert show]; 
[alert release]; 

任何人有任何想法?

编辑:只是想告诉你,我们修复了所有问题。在仔细检查我们的代码并发现我们错误的东西时发现了一些麻烦。在iOS3中,相同的错误并不明显,因为操作系统本身速度更快,但在iOS4中致命的应用程序瘫痪。还有一些变量需要初始化为默认值(例如 - int x = 0;而不是int x;),然后事情开始按预期工作。

+0

你在UIAlertView中显示什么?它是否显示任何相关的数字?颜色选择器如何? 我会考虑操作系统以及它如何处理数据类型。 (具体使用不同的数字类型) – Moshe 2010-06-27 20:17:17

+0

即使这会冻结应用程序: UIAlertView * alert = [[UIAlertView alloc] initWithTitle:零消息:@“请在使用Facebook/Twitter/Flickr前阅读帮助”delegate:self cancelButtonTitle:@“ OK“otherButtonTitles:nil,nil]; [alert show]; [警报发布]; – duke4e 2010-06-27 20:45:58

+0

你确定你没有搞乱UIAlertView或其他系统UI元素的内部视图层次吗?这种层次结构不保证在操作系统更新和更新之间保持不变,因为这样做会在操作系统更新后破坏其他应用程序(这就是Apple强烈不赞同这一点的原因)。 – 2010-06-28 14:58:49

回答

1

尽管听起来很古怪,但请仔细检查您的内存管理。随着框架在主要版本之间的显着变化,代码中的任何潜在内存管理问题都可能成为这种怪异的根源。

+0

是的,但问题是仪器/泄漏仍然不报告任何怪异。 – duke4e 2010-06-27 20:54:52

+0

@ duke4e - 仅仅因为乐器不能立即显示出问题并不意味着它不存在。另外,不要只是在泄漏仪器中查找泄漏,请检查以确保内存监视器中整体内存使用量不会稳步增加,并查找其他奇怪行为。 – 2010-06-28 14:56:33

1

我会认为'零'会为'otherButtonTitles'做这项工作。第二个会导致坠机事件吗?

如果没有,崩溃时控制台上报告的错误是什么?

+0

这是一个非常有效的参数(第二个nil充当列表的标记),事实上,如果您不这样做,某个新的编译器会发出警告。 – 2010-06-28 15:00:07

0

我们发现与iOS 3相比,iOS 4更加积极主动地处理内存管理问题。从设计的角度来看,苹果现​​在不得不担心大量的应用程序可能在同一时间。我们有大量的内存管理不佳导致的崩溃错误,在iOS 3中根本没有显示出来。