我有一些代码,我正在尝试修改一个CGRect的属性,并使用这个新框架设置另一个CGRect:
actView = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray ] autorelease];
actView.hidesWhenStopped = NO;
[actView startAnimating];
frame = actView.frame;
frame.origin.x = mainLabel.frame.origin.x - frame.size.width - TBLCELLPADDING;
frame.origin.y = mainLabel.frame.origin.y;
actView.tag = TBLCELLACTTAG;
actView.frame = frame;
[cell.contentView addSubview:actView];
这适用于较新的iPhone的调试版本和发布版本。然而,在3G iPhone的发布版本上运行会产生一些疯狂的结果,并且会混淆视图。
预期结果(适用于较新的手机):
2012-01-01 14:41:43:449 myapp [691:775] Loading MainLabel: 122.000000 26.000000
2012-01-01 14:41:43:605 myapp[691:775] Loading Frame: 97.000000 26.000000
2012-01-01 14:41:43:713 myapp[691:775] Loading ActView: 97.000000 26.000000
运行带有发布版本的4.2固件的iPhone 3G的结果(这种情况发生在任何固件上):
2012-01-01 14:43:39:516 myapp[706:775] Loading MainLabel: 122.000000 26.000000
2012-01-01 14:43:39:589 myapp[706:775] Loading Frame: 26.000000 26.000000
2012-01-01 14:43:39:792 myapp[706:775] Loading ActView: 26.000000 0.000000
这会破坏我的应用程序中所有旧版iPhone的视图 有没有办法在代码方面专门处理这个问题?或者我应该修改旧版iPhone的构建设置中的内容吗?
答案 0 :(得分:3)
由于此问题仅存在于基于ARMV6的设备上,并且仅在构建优化代码时才存在,因此可能存在于llvm的错误ARMV6优化中。
将以下内容添加到构建设置中作为用户定义的设置:
GCC_THUMB_SUPPORT = NO
这应该是这样的:
这样做,它完全禁用了应用程序的拇指指令集构建。如果这导致应用程序正常运行,请检查应用程序是否仍在ARMV7设备上正常运行,因为此设置可能会严重影响性能。
尽管这似乎是GCC特定的设置,但仍然受到LLVM的尊重,并且在我需要更新的一些旧项目中保留了我的背后。
答案 1 :(得分:0)
如果应用程序在较旧的手机上运行,您可以随时指定不同的代码设置。使用预编译器标题。