gpt4 book ai didi

ios - iOS 8 App 上的内存警告 - 但使用率很低

转载 作者:可可西里 更新时间:2023-11-01 01:42:08 25 4
gpt4 key购买 nike

我希望有人能帮助我,我已经搜索了 Stackoverflow 和 Google,但我找不到正确的解决方案。我有一个非常简单的应用程序,它可以拍照(通过 UIImagePickerController 使用标准 iOS 相机),然后我以非常低的分辨率将它保存到文件系统 - let thumbNailData = UIImageJPEGRepresentation(image, 0.02)之后我使用 Core Data 在 Collection View 中显示图像——我只在 Core Data 中保存文件名,而不是图像,图像只在文件系统中。因此,但是,当我运行该应用程序时,它显示内存使用量不超过 15 MB,进程大约为 1-2%。一切运行良好,但在添加 6-7 张照片后,我收到奇怪的错误,例如内存警告、与我的 iPhone 失去连接以及此:

Communications error: <OS_xpc_error: <error: 0x198adfa80> { count = 1, contents =
"XPCErrorDescription" => <string: 0x198adfe78> { length = 22, contents = "Connection interrupted"

所以,我真的卡住了,我以为我把它做得很轻,然后我得到了这些错误……我已经向 App Store 提交了一个笔记应用程序,它的功能比这个高得多,但这个运行非常稳定......

有什么想法吗?

这是我的一些代码://这里我将图片名称加载到一个数组中,以便在 Collection View 中显示

func loadColl () {
let appDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
let context:NSManagedObjectContext = appDelegate.managedObjectContext!
let fetchRequest:NSFetchRequest = NSFetchRequest(entityName: "PictureNote")
var error:NSError?
var result = context.executeFetchRequest(fetchRequest, error: &error) as [PictureNote]

for res in result {
println(res.latitude)
println(res.longitude)
println(res.longDate)
println(res.month)
println(res.year)
println(res.text)
pictures.append(res.thumbnail)
}

}

//这是在 Collection View 中显示的代码

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

let myImageCell:ImageCell = myCollectionView.dequeueReusableCellWithReuseIdentifier("imageCell", forIndexPath: indexPath) as ImageCell
myImageCell.imageCell.image = self.loadImageFromPath(fileInDocumentsDirectory(self.pictures[indexPath.row]))
return myImageCell
}

//这是从磁盘加载图片的代码

func loadImageFromPath(path: String) -> UIImage {
let image = UIImage(contentsOfFile: path)
if image == nil {
self.newAlert("Error loading your image, try again", title: "Notice")
}
return image!
}

//这是我的保存代码

func saveNewEntry () {
var unique = NSUUID().UUIDString
var imageTitle = "Picture\(unique).jpg"
var image = self.pickedImageView.image
var path = fileInDocumentsDirectory(imageTitle)
var thumbImageTitle = "ThumbPicture\(unique).jpg"
var thumbPath = fileInDocumentsDirectory(thumbImageTitle)
if self.saveImage(image!, path: path) == true && self.saveThumbImage(image!, thumbPath: thumbPath) == true {
// Create the saving context
let context = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext!
let entityOne = NSEntityDescription.entityForName("PictureNote", inManagedObjectContext: context)
let thisTask = PictureNote(entity: entityOne!, insertIntoManagedObjectContext: context)
// Get all the values here
self.getMyLocation()
var theDate = NSDate()
thisTask.month = Date.toString(date: theDate, format: "MM")
thisTask.year = Date.toString(date: theDate, format: "yyyy")
thisTask.longDate = theDate
thisTask.longitude = getMyLocation()[1]
thisTask.latitude = getMyLocation()[0]
thisTask.text = self.noteTextView.text
thisTask.imageURL = imageTitle
thisTask.thumbnail = thumbImageTitle
thisTask.id = unique
// Saving to CoreData
if context.save(nil) {
self.newAlert("Saving your note was successful!", title: "Notice")
self.noteTextView.text = ""
} else {
self.newAlert("Error saving your note, try again", title: "Notice")
}

} else {

self.newAlert("Error saving your image, try again", title: "Notice")
}


self.pickedImageView.image = UIImage(named: "P1000342.jpg")
}

我真的很感谢你的每一个建议....如果你需要更多的代码,请告诉我......

最佳答案

我注意到您在使用 UIImageJPEGRepresentation 时大大降低了质量因数。如果这是尝试减少所涉及的内存,那么所做的就是减少写入持久存储的结果 NSData 的大小,但是将该图像加载到 ImageView 中仍然需要一些东西(4 × width × height) 字节的顺序(注意,这是图像的尺寸,而不是 ImageView )。因此,不管 UIImageJPEGRepresentation 使用的质量因素如何,来自 iPhone 的 3264 × 2448 图像每张图像占用 30mb。

通常我会确保我的集合/ TableView 使用缩略图表示(ALAssetthumbnail 属性或我自己的resize the default representation)。如果我在任何地方缓存这个缩略图(比如你的问题建议的持久存储),我就可以使用缩略图的高质量表示(我使用 PNG 是因为它在压缩时是无损的,但是质量因子为 0.7-0.9 的 JPEG 是一个也相当忠实的版本)。

关于ios - iOS 8 App 上的内存警告 - 但使用率很低,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28794568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com