1

我有一个 iOS 应用程序,我转换为支持 Arm64。我最初的转换步骤是:

1) 将目标架构 $(ARCHS_STANDARD_32_BIT) 更改为 $(ARCHS_STANDARD)

2)修复枚举定义:

// before
typedef enum {
    MyEnumValue1,
    MyEnumValue2
} MyEnum;

// after
typedef NS_ENUM(NSUInteger, MyEnum) {
    MyEnumValue1,
    MyEnumValue2
}

3)修复不正确的类型stringWithFormat

// before
[NSString stringWithFormat:@"The value is %d", someValue];

// after
[NSString stringWithFormat:@"The value is %lu", someValue];

差不多就是这样。我遇到的问题是,在某些视图中,文本现在呈现不正确。呈现文本的视图周围的代码都没有改变,我没有做任何自定义文本绘制。在下面的示例图片中,文本由UIButton.

UIButton转换为 Arm64 之前渲染的文本

转换为 Arm64 之前

UIButton转换为 Arm64 后呈现的文本

转换为 Arm64 后

我可以从转换前的提交到转换后的提交来回切换并重现这一点。我仔细扫描了差异,没有看到任何明显的影响因素。

问题

  1. 什么可能导致这种情况?
  2. 关于如何调试和/或寻找什么的任何想法?
  3. 更好的是,有人知道为什么会这样吗?
4

1 回答 1

0

我终于开始创建一个展示这种行为的示例应用程序。在这个过程中,我发现了问题。我的一个自定义UITableViewCell类用作应用程序中许多单元格类型的超类。此单元格的cell.layer.shouldRasterize设置设置为“是”。虽然这在 32 位版本的应用程序中似乎可以正常工作,但它在 ARM64 版本中引起了问题。无论如何,这也可能是错误的做法,因为单元渲染性能会受到不利影响。这些单元格在各个边缘周围都有阴影效果,这就是我shouldRasterize开始着手的原因。

如果没有示例应用程序,这里的任何人都无法帮助我,所以我很感激你们中的任何人花时间调查。如果我没有弄清楚,我会发布示例应用程序。

于 2014-07-02T23:11:18.807 回答