无法调试 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)!
解决了我的问题并替换了上面的所有代码。这就是我在线复制代码的结果!学过的知识。感谢您的帮助!
感谢查看我的 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)!
解决了我的问题并替换了上面的所有代码。这就是我在线复制代码的结果!学过的知识。感谢您的帮助!