App Store代码与iPhone 3G上的Xcode/Device代码不同

Cra*_*tis 9 iphone cocoa-touch objective-c uitableview ios

我不知道如何解释这一个.我昨天向商店提交了我的一个应用程序的更新.第一个屏幕截图我在iPhone 3G运行的一个特定屏幕如何运行,运行iOS 4.2.1,从App Store下载:

下面的第二张图片完全相同的代码,自原始提交以来没有进行任何更改,在通过Xcode连接的完全相同的设备上运行.

该应用程序运行正常在我的iPhone 4,运行iOS 5,从App Store下载.所以回顾一下:

  1. 从App Store获得的应用程序在iPhone 3G上存在缺陷
  2. 从App Store获得的应用程序在iPhone 4上很不错
  3. 通过Xcode捆绑的应用程序在iPhone 3G上很不错

这些不是唯一的图形不一致,但它们都与自定义的UITableViewCell代码相关,除了在每个目录中按几个像素标记之外,它没有做任何事情,并且从第一天起就一直运行良好.我已经用idp-dts提交了一份报告,我正在等待他们的回复,但由于候补名单通常是一周或更长时间,我宁愿自己解决这个问题.

任何帮助/提示/猜测将非常感谢!

iPhone 3G运行App Store版我的应用程序:

在此输入图像描述

iPhone 3G运行Xcode系留我的应用程序版本:

在此输入图像描述

编辑:这听起来非常类似于这个问题:使用LLVM构建和任何优化都会导致应用程序在启动时崩溃联系我的客户使用的是第二代iPod Touch,这是使用armv6的iPhone 3G以外的唯一其他硬件.

编辑2:这是设置左侧颜色条边界的代码片段.代码中似乎没有任何可疑的东西:

- (void)layoutSubviews {
    CGRect colorViewFrame = self.bounds;
    colorViewFrame.size.width = 6;
    colorViewFrame.origin.y += 3;
    colorViewFrame.origin.x -= 1;
    colorViewFrame.size.height -= 8;

    colorView.frame = colorViewFrame;
    ...
}
Run Code Online (Sandbox Code Playgroud)

Cra*_*tis 7

这就是我在Build Settings下找到的内容:

在此输入图像描述

在编译器优化中采用了一两个类是有道理的.设备上的代码调试应保持其原始状态以进行调试,并且应针对速度和效率优化发布的代码.

所以这是有趣的部分.将我的调试设置更改为最快,最小:

在此输入图像描述

在Xcode中运行tethered时,导致我的设备上出现问题.

在提交雷达或做出任何草率决定并向App Store提交非优化代码之前,还有什么我应该考虑调查的吗?编译器优化是否真的是布局问题的根本原因?

编辑:如果优化级别是问题,为什么优化的代码在我的iPhone 4上正常运行,但在我的iPhone 3G上没有正确运行?

编辑2:此问题听起来与此答案非常相似:使用LLVM构建和任何优化都会导致应用在启动时崩溃

编辑3:听说Apple Radar,这是一个众所周知的问题.将在未来版本的Xcode中修复.谢谢你所有的帮助!

  • 听起来像一个变量初始化问题 - 就像在某些情况下为你初始化的值,有时则不是. (3认同)