2016-02-11 47 views
0

我基本上有一個菜單,其中顯示一堆按鈕,每次點擊它們時,它會導致顯示不同的相同視圖,這取決於從菜單中選擇的項目,還有一個mp4播放。每當我進入其中一個項目(不同的視圖)或返回到菜單時,我的記憶增加並且從不下降,如果這有什麼不同,則以模態方式呈現視圖。我猜測這個蠕變是由mp4引起的,我怎麼能解決這個問題?簡單的菜單上的內存蠕變應用程序

import Foundation 
import UIKit 
import AVKit 
import AVFoundation 

class menu : UIViewController { 


var info : AVPlayer? 
var count = 0 

@IBAction func instrumentas2(sender: UIButton) { 
    count = 2 
} 
@IBAction func instrumentas1(sender: UIButton) { 
    count = 1 
} 
@IBAction func instrumentas0(sender: UIButton) { 
    count = 0 } 


override func viewWillAppear(animated: Bool) { 


    let videoURL: NSURL = NSBundle.mainBundle().URLForResource("info2", withExtension: "mp4")! 


     info = AVPlayer(URL: videoURL) 
     info?.actionAtItemEnd = .None 
     info?.muted = true 



     let playerLayer = AVPlayerLayer(player: info) 
     playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill 
     playerLayer.zPosition = 1 
     playerLayer.frame = CGRect(x:20.0, y: 703.0, width: 36.0, height: 36.0) 


     view.layer.addSublayer(playerLayer) 

     info?.play() 

     NSNotificationCenter.defaultCenter().addObserver(self, 
      selector: "loopVideo", 
      name: AVPlayerItemDidPlayToEndTimeNotification, 
      object:nil) 




} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    NSNotificationCenter.defaultCenter().removeObserver(self, name:AVPlayerItemDidPlayToEndTimeNotification, object: nil) 
    let du:display = segue.destinationViewController as! display 
    du.skaicius = count 

} 

func loopVideo() { 
    info?.seekToTime(kCMTimeZero) 
    info?.play() 
} 
} 

我張貼整個事情,因爲我真的不知道什麼可能會導致此。

回答

0

這行代碼:

view.layer.addSublayer(playerLayer) 

是添加子層。你是否刪除它們?

+0

我認爲他們會被刪除,當我segue到其他視圖,如果不是這種情況我怎麼能刪除它們? – snukumas

+0

我沒有遇到過這個問題,但試試這個問題/答案:http://stackoverflow.com/questions/10789766/remove-all-sublayers-from-a-view – Dave2e

+0

這是非常有用的,你能給我一個例子嗎?這將如何實現到我的代碼中,即時通訊不完全確定我明白這應該如何實現,因爲在哪裏我會把這行代碼self.view.layer.performSelector(「removeFromSuperlayer」)和什麼我需要調整它以適合我的代碼 – snukumas