无法调试 EXC BAD ACCESS 代码 1

Unable to debug EXC BAD ACCESS Code 1

感谢查看我的 post。

所以在 image!.drawInRect(rect!) 行,我收到了 EXC_BAD_ACCESS 代码 1 错误,我这辈子都弄不明白。我在 运行 Scheme 中启用了 Zombies,但没有打印出来(也许我也做错了?),我有 println() 似乎是我所有的变量,没有什么是 nil。

我想指出,这段代码运行了两次,然后在第三次调用时失败了,大多数情况下都是如此。在我的应用程序中,您拍照,然后它带您编辑图片(调用此功能时)。当我回到我的相机拍照并 return 编辑它时(第 3 次),我得到这个错误。

此外,此方法在viewDidAppear()

中被调用

感谢任何帮助。我要拔头发了!

       var rect: CGRect?
    var image: UIImage?
func convertCIImageToUIImage(cIImage: CIImage) -> UIImage {

    println(cIImage)

    let size: CGSize = filteredImageView.inputImage.size
    println(filteredImageView.inputImage.size)

    UIGraphicsBeginImageContext(size)

    rect = CGRect(origin: CGPointZero, size: size)
    image = UIImage(CIImage: filteredImageView.filter.outputImage)

    println(UIGraphicsGetCurrentContext())
    println("size: \(size)")
    printAllObjects()
    println()

    image!.drawInRect(rect!)
    let newImage = UIGraphicsGetImageFromCurrentImageContext()

    UIGraphicsEndImageContext()

    image = nil
    rect = nil

    let finalImage = UIImage(CGImage: newImage.CGImage!, scale: 1.0, orientation: UIImageOrientation.Right)
    return finalImage!
}

因为有问题的行强制解包了两个可选值,所以你可能正在解包一个 nil(这会产生错误)。尝试使用可选绑定进行安全解包:

if let safeRect = CGRect(origin: CGPointZero, size: size),
   let safeImage = UIImage(CIImage: filteredImageView.filter.outputImage)
{
   safeImage.drawInRect(safeRect)
}

这样,如果 CGRect 实例或 UIImage 实例的构造失败,则不会执行大括号内的行。

解决了!

我的功能被远射过度设计了。一个简单的 return UIImage(CIImage: cIImage)! 解决了我的问题并替换了上面的所有代码。这就是我在线复制代码的结果!学过的知识。感谢您的帮助!