Ich erhalte diesen Fehler, wenn ich versuche, mehrere Videos mit dieser schnellen Bibliothek (https://github.com/piemonte/player) zu spielen. Nicht sicher, ob es mit diesem Player oder mit dem Photos-Framework oder was auch immer zusammenhängt.Fotos Rahmen: Verbindung zu Assetsd wurde unterbrochen oder Assetsd starb
Was passiert ist, habe ich eine Ansicht, die entweder ein Foto oder ein Video anzeigen wird. Alles funktioniert gut ein paar Mal, bis ein paar Videos abgespielt haben und dann erscheint diese Nachricht, gefolgt von allen Videos, die nicht abgespielt werden können und an ihrer Stelle sieht man nur einen schwarzen Bildschirm und dann bekomme ich einen Speicherverbrauchsfehler.
Ich benutze eine Bibliothek namens SwipeView und hier ist einige relevante Code, der hilfreich sein kann.
func swipeView(swipeView: SwipeView!, viewForItemAtIndex index: Int, reusingView view: UIView!) -> UIView! {
let asset: PHAsset = self.photosAsset[index] as PHAsset
// Create options for retrieving image (Degrades quality if using .Fast)
// let imageOptions = PHImageRequestOptions()
// imageOptions.resizeMode = PHImageRequestOptionsResizeMode.Fast
var imageView: UIImageView!
let screenSize: CGSize = UIScreen.mainScreen().bounds.size
let targetSize = CGSizeMake(screenSize.width, screenSize.height)
var options = PHImageRequestOptions()
options.resizeMode = PHImageRequestOptionsResizeMode.Exact
options.synchronous = true
if (asset.mediaType == PHAssetMediaType.Image) {
PHImageManager.defaultManager().requestImageForAsset(asset, targetSize: targetSize, contentMode: .AspectFill, options: options, resultHandler: {(result, info) in
if (result.size.width > 200) {
imageView = UIImageView(image: result)
}
})
return imageView
} else if (asset.mediaType == PHAssetMediaType.Video) {
self.currentlyPlaying = Player()
PHImageManager.defaultManager().requestAVAssetForVideo(asset, options: nil, resultHandler: {result, audio, info in
self.currentlyPlaying.delegate = self
self.currentlyPlaying.playbackLoops = true
self.addChildViewController(self.currentlyPlaying)
self.currentlyPlaying.didMoveToParentViewController(self)
var t = result as AVURLAsset
var url = t.valueForKey("URL") as NSURL
var urlString = url.absoluteString
self.currentlyPlaying.path = urlString
})
return self.currentlyPlaying.view
}
return UIView()
}
func swipeViewItemSize(swipeView: SwipeView!) -> CGSize {
return self.swipeView.bounds.size;
}
func swipeView(swipeView: SwipeView!, didSelectItemAtIndex index: Int) {
self.currentlyPlaying.playFromBeginning()
}
func swipeViewCurrentItemIndexDidChange(swipeView: SwipeView!) {
self.currentlyPlaying.stop()
}
Alle Gedanken wären großartig.
Es sieht so aus, als ob jedes Mal, wenn ein Video abgespielt wird, ein neuer 'Player()' erstellt und als Child-View-Controller hinzugefügt wird. Entfernen Sie es jemals, wenn es fertig ist? Das könnte Speicherprobleme verursachen. – Jack
@JackWu. Oh, das ist es wahrscheinlich. Ich werde mir das später ansehen, danke! – Jonovono