【问题标题】:Xcode 7/Swift 2.0, imageWithRenderingMode(.AlwaysTemplate), and EXC_BAD_ACCESSXcode 7/Swift 2.0、imageWithRenderingMode(.AlwaysTemplate) 和 EXC_BAD_ACCESS
【发布时间】:2015-08-06 19:24:59
【问题描述】:

我目前在移植现有 Swift 应用程序以使其在 iOS9 上运行方面处于领先地位。不幸的是,我在尝试运行该应用程序时遇到了运行时错误,该应用程序目前适用于 Xcode 6 和 Swift 1.x。使用此代码:

let checkedImage: UIImageView = {
    let image = UIImage(named: "checkbox-checked.png")!
    let tintImage = image.imageWithRenderingMode(.AlwaysTemplate)
    let view = UIImageView(image: tintImage)
    view.sizeToFit()
    return view
}()

我收到以下错误,这发生在UIImageView 的构造函数上:Thread 1: EXC_BAD_ACCESS (code=2, address=0x177d80)

我不知道这是否是一个测试版错误。

编辑:这是从 Xcode 7 beta 5 开始发生的。

编辑 2:看起来 UIImageView 对原始图像没问题。看起来它已缩小到imageWithRenderingMode

【问题讨论】:

  • 1) 检查名称为 checkbox-checked.png 的图像是否存在 2) 注释掉除“let view = UIImageView(image: tintImage)”和“return view”之外的所有行。它会给出错误吗?如果不是,则逐一注释其他行,直到找到导致应用程序崩溃的行。然后让我们知道是哪一行
  • @AndriyGordiychuk 正如我所提到的,UIImageView 的实例化发生了错误。同样正如我所说,代码在 Xcode 6 中运行良好。
  • 可以上传源代码吗?由于您调用 .checkedImage 的位置,可能会发生此错误。此外,检查 tintImage 是否为 nil 仍然是一个好主意。也许某些连接没有在 Xcode 7 中加载,并且您的 UIImage 为 nil
  • 不幸的是,我无法传递完整的源代码。 tintImage 不是 nil,但原图似乎还可以。更新/编辑注释imageWithRenderingMode
  • 你找错地方了。 imageWithRenderingMode 没有任何变化。返回第一行并修复它。重写您的代码,使 没有感叹号

标签: xcode swift uiimageview swift2 xcode7


【解决方案1】:

我最终将 Xcode 6 代码库迁移到 Xcode 7 beta 5,而不是在 Xcode 7 beta 5 中打开已经迁移的 Xcode 7 beta 4 代码库,现在这个错误似乎不存在了。

【讨论】:

    猜你喜欢
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    相关资源
    最近更新 更多