内存dealloc一般xcode swift信息

时间:2015-07-08 14:49:05

标签: swift memory-management avplayer dealloc

我对iOS快速开发相当新,我对内存管理有一定的了解。

正在处理的应用程序是一系列表格视图,以AVPlayerView控制器播放来自流式网址的视频结束。

在模拟器中运行应用程序并观察内存仪表板时,我可以看到从一个表视图返回到前一个表视图会使内存减少。但是,当进入AVPlayerView控制器时,内存会增加,然后当返回上一个表View时,内存不会减少。

我在我的PlayerView控制器(viewDidLoad)上使用以下代码:

 var player : AVPlayer? = nil
 let playerController = AVPlayerViewController()

 var playerItem = AVPlayerItem(URL: mediaUrl)
            self.player = AVPlayer(playerItem: playerItem)
            NSNotificationCenter.defaultCenter().addObserver(self, selector: "playerDidFinishPlaying:", name: AVPlayerItemDidPlayToEndTimeNotification, object: playerItem)

            self.playerController.showsPlaybackControls = false

            self.playerController.player = self.player
            self.addChildViewController(self.playerController)
            self.view.addSubview(self.playerController.view)
            self.playerController.view.frame = self.view.frame
            self.view.addSubview(self.scrub)

            self.player!.play()

然后退出控制器并返回上一个控制器:

            self.player!.pause()
            self.navigationController?.navigationBarHidden = false
            navigationController?.popViewControllerAnimated(true)

在播放器中,我使用按钮从一个视频转到另一个视频:

self.player!.replaceCurrentItemWithPlayerItem(playerItem)

使用此更改视频但不会增加内存。事实上,它减少很多,然后回到正常水平所以我必须假设内存与控制器相关联,我一定错过了一些东西。

我有人可以解释它是如何工作的,这将非常有帮助。也许这完全正常,我什么都不担心,但如果不是,我会很乐意解决这个问题。 PS:我不得不说应用程序工作正常,我没有任何崩溃或任何事情。

由于

编辑/更新

在进入PlayerView控制器之前,我通常会分配大约25Mo的内存。一旦视频播放,我大约125Mo。

我设法通过在解除控制器之前将AVPlayer设置为nil来将此内存分配减少到大约75。我还从它的父控制器中删除了PlayerView层,但这对内存没有影响。

            self.player!.pause()
            self.playerController.player = nil
            self.playerController.removeFromParentViewController()
            self.navigationController?.navigationBarHidden = false
            navigationController?.popViewControllerAnimated(true)

0 个答案:

没有答案