1

我正在将图像保存在相机胶卷中。但是当它完成后,我应该参考数据库中的图像。逻辑很简单

class MyDownloader{
    let db : DbHelper = DbHelper.sharedInstance

    func downloadFileFromServer(){
        let urlString = "http://any-image.jpg"
        let url = NSURL(string: urlString)
        let data = NSData(contentsOfURL: url!)
        let image = UIImage(data: data!)
        if(image == nil){
            println("no downloaded image")
        }
        else{
            // THIS WORKS WITH NO ERRORS
            --> --> UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

            // THIS NEVER WORKS 
            --> --> UIImageWriteToSavedPhotosAlbum(image, self, "image:didFinishSavingWithError:contextInfo:", nil)
        }
    }

    func image(image: UIImage, didFinishSavingWithError error: NSErrorPointer, contextInfo:UnsafePointer<Void>) {
        if error != nil {
            // error feedback goes here
        }
        else{
            // save db reference here
        }
    }
}

下面的方法

UIImageWriteToSavedPhotosAlbum(image, self, "image:didFinishSavingWithError:contextInfo:", nil)

总是返回 EXC_BAD_ACCESS

4

2 回答 2

1

您可能应该将MyDownloader继承自NSObjectas 作为selectorObjective-C 运行时的一部分。

于 2017-06-29T08:53:45.660 回答
0

您的 MyDownloader 类实例可能在 UIImageWriteToSavedPhotosAlbum 调用完成之前被释放,因此当它尝试调用 image:didFinishSavingWithError:contextInfo: 方法时,回调目标不再存在。确保您的 MyDownloader 对象存在。

于 2015-07-14T19:05:47.157 回答