【发布时间】:2015-11-01 02:44:30
【问题描述】:
在我的应用程序中,我有一个图像数组,其中包含在我的相机上拍摄的所有图像。我正在使用 collectionView 来显示这些图像。但是,当这个图像数组达到第 20 个左右的图像时,它就会崩溃。我相信这是由于内存问题造成的。如何以内存高效的方式将图像存储在图像数组中?
Michael Dauterman 使用缩略图提供了答案。我希望除此之外还有解决方案。也许将图片存储到 NSData 或 CoreData 中?
Camera.swift:
//What happens after the picture is chosen
func imagePickerController(picker:UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject:AnyObject]){
//cast image as a string
let mediaType = info[UIImagePickerControllerMediaType] as! NSString
self.dismissViewControllerAnimated(true, completion: nil)
//if the mediaType it actually is an image (jpeg)
if mediaType.isEqualToString(kUTTypeImage as NSString as String){
let image = info[UIImagePickerControllerOriginalImage] as! UIImage
//Our outlet for imageview
appraisalPic.image = image
//Picture taken, to be added to imageArray
globalPic = image
//image:didFinish.. if we arent able to save, pass to contextInfo in Error Handling
if (newMedia == true){
UIImageWriteToSavedPhotosAlbum(image, self, "image:didFinishSavingWithError:contextInfo:", nil)
}
}
}
NewRecord.swift
var imageArray:[UIImage] = [UIImage]()
viewDidLoad(){
//OUR IMAGE ARRAY WHICH HOLDS OUR PHOTOS, CRASHES AROUND 20th PHOTO ADDED
imageArray.append(globalPic)
//Rest of NewRecord.swift is code which adds images from imageArray to be presented on a collection view
}
【问题讨论】:
-
您是否考虑过持有一组图像路径?然后使用 collectionView 以便您可以回收活动视图并仅根据需要加载图像?