我正在制作一本使用故事板的互动儿童书,为我的书中的每一页布置12页。但是,每次我切换视图控制器去另一个故事板时,我的内存每次增加几乎两倍。我一直收到内存警告和崩溃,在调试导航器中,我看到内存从~36跳到~54到~95直到达到200以上。
我尝试过使用segue过渡和程序化过渡,如下所示:
class page01VC:UIViewController {
@IBOutlet var kid: UIImageView!
let kidStanding = UIImage(named: "01_boyStanding")
let kidJumping = UIImage(named: "01_boyJumping")
var kidJump:UIButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
var boyCounter: CGFloat = 0.0
var boyJumpTimer:NSTimer!
@IBOutlet var snowflakes: UIImageView!
let flakes = UIImage(named: "01_flakes")
var flakeTimer:NSTimer!
override func loadView() {
super.loadView()
flakeTimer = NSTimer.scheduledTimerWithTimeInterval(0.008, target: self, selector: Selector("moveSnow"), userInfo: nil, repeats: true)
//NSRunLoop.currentRunLoop().addTimer(flakeTimer, forMode: NSRunLoopCommonModes)
kidJump.frame = CGRectMake(140, 250, 338, 478)
kidJump.addTarget(self, action: "kidJumpTimer:", forControlEvents: UIControlEvents.TouchDown)
self.view.insertSubview(kidJump, aboveSubview:kid)
}
//Other functions I have made would be here
}
有谁知道如何防止这种记忆积聚?提前谢谢!
答案 0 :(得分:0)
您是否在viewDidDisappear
删除了对计时器的引用?在viewWillAppear
中启动您的计时器,然后在viewDidDisappear
中删除它们。我认为即使在视图不可见之后,计时器仍然存在。
请参阅NSTimer documentation专门“在运行循环中安排计时器”(该部分的底部段落)和invalidate
方法。
另请参阅适用于iOS的App编程指南中的Performance Tips和适用于iOS的View Controller编程指南中的Resource Management in View Controllers。