无法调试EXC错误访问代码1



谢谢你看我的帖子。

所以在image!.drawInRect(rect!)线上,我得到EXC_BAD_ACCESS代码1错误,我不能弄清楚我的生活。我在Run Scheme中启用了僵尸,没有打印出来(也许我也做错了?),我有println()似乎我所有的变量,没有什么是nil。

我想要注意的是,这段代码工作了两次,然后在第三次调用时失败,大多数时候。在我的应用程序中,你拍了一张照片,然后它带你编辑图片(当这个函数被调用时)。当我回到我的相机拍照,并返回编辑它(在第三次),我得到这个错误。

同样,这个方法在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!
}

解决了!

我的功能被过度设计了。一个简单的return UIImage(CIImage: cIImage)!解决了我的问题,并取代了上面所有的代码。这就是我在网上复制代码的后果!教训。谢谢你的帮助!

由于问题行强制展开两个可选选项,可能您正在展开一个nil(这会生成错误)。尝试使用可选绑定来安全展开:

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

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

最新更新