Я реализую персональную Фотогалерею, хранящуюся в специальном Фотоальбоме, используя PHAssets.
Пользователь может делать снимки с камеры для сохранения в этом личном альбоме. Этот альбом отображается в приложении через CollectionView
В настоящее время, если я добавляю более 6 изображений, я сталкиваюсь со следующей проблемой:
Connection to assetsd was interrupted or assetsd died
потом в логах
CoreData: XPC: sendMessage: failed #0
CoreData: XPC: XPC connection was invalidated
Message from debugger: Terminated due to memory issue
Я попытался уменьшить размер изображений, которые будут вставлены в PHAsset (используя функцию resizeImage), но результат тот же.
Снимок сделан, правильно добавлен в PHAsset и приложение вылетает. Если я перезапускаю приложение, я вижу добавленное изображение, но если я пытаюсь добавить другое изображение, я сталкиваюсь с тем же сбоем.
Вот код didFinishPickingMediaWithInfo:
public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]){
if let image: UIImage = info["UIImagePickerControllerOriginalImage"] as? UIImage {
let rez_img = resizeImage(image: image, withSize: CGSize(width: 300, height: 300))
// Create asset for the taken image and save it
PHPhotoLibrary.shared().performChanges({
let assetToCreate = PHAssetChangeRequest.creationRequestForAsset(from: rez_img)
if let assetPlaceholder = assetToCreate.placeholderForCreatedAsset {
self.photoIdentifier = assetPlaceholder.localIdentifier // Retrive the local identifier of the photo
if let albumChangeRequest = PHAssetCollectionChangeRequest(for: self.assetCollection, assets: self.photosAsset) {
albumChangeRequest.addAssets(([assetPlaceholder] as NSArray?)!)
}
}
},
completionHandler: {(success, error) -> Void in
NSLog("Adding Image to library > %@", (success ? "Success":"Error"))
DispatchQueue.main.async {
picker.dismiss(animated: true, completion: nil)
}
})//end performChanges
}
}
Может быть, мне нужно освободить память перед отображением моего CollectionView?