在iOS中使用UIImageJPEG表示时,内存从未下降
我正在构建一个框架,在B64中返回一个字符串图像 这是我的行号 我正在使用在iOS中使用UIImageJPEG表示时,内存从未下降,ios,swift,base64,uiimagejpegrepresentation,Ios,Swift,Base64,Uiimagejpegrepresentation,我正在构建一个框架,在B64中返回一个字符串图像 这是我的行号 我正在使用uiimagejpegresentation缩小图像,然后使其成为B64 imageb64Min = UIImageJPEGRepresentation(image!, 0)!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0)) 但每次我在应用程序流中使用这一行时,内存都不会下降 达到应用程序的内存限制并中断应用程序 你知道为
uiimagejpegresentation
缩小图像,然后使其成为B64
imageb64Min = UIImageJPEGRepresentation(image!, 0)!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
但每次我在应用程序流中使用这一行时,内存都不会下降
达到应用程序的内存限制并中断应用程序
你知道为什么会这样吗
编辑:这是我的代码流
func arregloImagenesConDNI(arrImagenes: NSArray, tipoDocumento: TipoDocumento, codigoDNI: BAZQRScan.eCodigo, dni: String)
{
NSLog("Arreglo de Imagenes: %@", arrImagenes.description)
// let ecodigo = codigoDNI as! Int
var fileNames: Array = Array <String>();
var imagesMin: Array = Array <String>();
//for var index = 0; index < arrImagenes.count; index += 1
var imageb64:String?
var imageb64Min:String?
for index in 0 ..< arrImagenes.count {
let image:UIImage? = (arrImagenes[index] as? UIImage)
imageb64 = ABANKUtil.encodeToBase64String(image)
// [UIImageJPEGRepresentation(image, 0.6) base64EncodedStringWithOptions:0];
// let imageb64:String = UIImageJPEGRepresentation(image!, 0)!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
let identifier:String = NSProcessInfo.processInfo().globallyUniqueString
let keys: Array = Array(arrayLiteral: "name", "resource")
let dataToSave:NSDictionary = NSDictionary(objects: [identifier, imageb64!], forKeys: keys);
// [UIImageJPEGRepresentation(image, 0.6) base64EncodedStringWithOptions:0];
imageb64Min = UIImageJPEGRepresentation(image!, 0)!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
// Not really temp files
let sessionPath:String = String(format: "%@%@", ABANKUtil.getDocsPath(), identifier)
NSLog("Create file at path: %@", sessionPath);
dataToSave.writeToFile(sessionPath, atomically: true)
fileNames.append(identifier)
imagesMin.append(imageb64Min!)
}
let jsonNames:NSMutableString = "["
let jsonImages:NSMutableString = "[";
// for var index = 0; index < arrImagenes.count; index += 1
for index in 0 ..< arrImagenes.count {
if index == 0{
jsonNames.appendFormat("\"%@\"", fileNames[index])
jsonImages.appendFormat("\"%@\"", imagesMin[index])
}
else {
jsonNames.appendFormat(",\"%@\"", fileNames[index])
jsonImages.appendFormat(",\"%@\"", imagesMin[index])
}
}
jsonNames.appendString("]")
jsonImages.appendString("]")
print("JsonImages: \(jsonImages)")
print("JsonNames: \(jsonNames)")
let respuesta : String = "{\"codigo\": 0, \"mensaje\": \"Se capturaron las fotos\",\"arrArchBase64\": \(jsonImages) ,\"arrNomArchBase64\": \(jsonNames) ,\"DNI\": \"\(dni)\" ,\"codigoDNI\": \"\(codigoDNI)\"}"
dispatch_async(dispatch_get_main_queue()) {
print("Send response digi")
self.webview?.send(respuesta, callback: self.callback!, scope: self.module!)
}
imageb64 = nil
imageb64Min = nil
self.dismissViewControllerAnimated(true, completion: nil)
}
func arregolimagenescondni(arrImagenes:NSArray,tipoDocumento:tipoDocumento,codigoDNI:bazzrscan.eCodigo,dni:String)
{
NSLog(“Arreglo de Imagenes:%@”,arrImagenes.description)
//设ecodigo=codigoDNI as!Int
var文件名:Array=Array();
var-imagesMin:Array=Array();
//对于var指数=0;指数
如果查看uiimagejpegresentation(image!,0)
返回的数据对象的长度,我怀疑它不会那么大。原始的图像
引用是否被释放(因为这将占用比数据多得多的内存)?如果您查看分配,这里没有释放哪些对象?@diego显示代码流,我怀疑您只是保留了对B64映像的引用,而从未释放它们。内存泄漏的配置文件!您好@Lawicko,这是我的代码流,添加到原始版本post@DiegoPalomares对于您执行的每个图像imagesMin.append(imageb64Min!)
,这就是为什么它会保留所有图像直到此方法结束。如果您的问题是图像在arregolomagenescondni
方法之外持续存在,那么您需要显示整个上下文。