2015-09-14 4 views
0

Спасибо, что просмотрел мой пост.Невозможно отладить EXC BAD ACCESS Код 1

Так что на линии image!.drawInRect(rect!), я получаю ошибку кода EXC_BAD_ACCESS Code 1, и я не могу понять это для жизни меня. Я включил Zombies в Run Scheme, и ничего не распечатывается (возможно, я тоже делаю это неправильно?), У меня есть println(), казалось бы, все мои переменные, и ничто не равно нулю.

Хотелось бы отметить, что этот код работает дважды, а затем не работает в третий раз, когда он называется, в большинстве случаев. В моем приложении вы делаете снимок, затем требуется отредактировать изображение (когда эта функция вызывается). Когда я вернусь к своей камере, чтобы сделать снимок, и верните его, чтобы отредактировать его (в третий раз), я получаю эту ошибку.

Кроме того, этот метод вызывается в 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! 
} 

ответ

3

Решено!

Моя функция была чрезмерно спроектирована с помощью длинного выстрела. Простой return UIImage(CIImage: cIImage)! решил мою проблему и заменил весь код выше. Это то, что я получаю для копирования кода онлайн! Урок выучен. Спасибо за помощь!

2

Поскольку линия в вопросе вынужденного разворачивает два УСТРОЙСТВА, может быть, вы разворачивание ноля (который генерирует ошибку). Попробуйте использовать опциональное связывание для безопасного разворачивая:

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

Таким образом, если строительство либо CGRect экземпляра или экземпляр UIImage терпит неудачу, не будет выполнена строка внутри скобок.

+0

Эй, спасибо за ответ. Так прокомментировал мою линию и заменил ее на вашу. И то же самое происходит. Он не работает на 'safeImage.drawInRect (safeRect)'. Очень странно. Любые другие идеи? – justColbs

+0

Вставка кода на игровой площадке дает мне хороший кучу ошибок в отношении 'filterImageView'. Что это? – MustangXY

+0

Это нестандартный класс. Я решил проблему. Проверьте ниже. – justColbs