मैंने स्प्राइटकिट के साथ एक साधारण गेम बनाया, हालांकि हर बार जब मैं गेम चलाता हूं, सिम्युलेटर में मेमोरी उपयोग लगभग 30 एमबी बढ़ता है, लेकिन गेम समाप्त होने पर कभी कम नहीं होता है।स्विफ्ट में, एसकेएससीन हटा दिए जाने के बाद मेमोरी को सामान्य कैसे प्राप्त करें?
जब मैं दस बार से अधिक खेल चलाता हूं तो सिम्युलेटर धीमा और धीमा हो जाता है और अंततः दुर्घटनाग्रस्त हो जाता है।
इस सरल खेल में मैं दो नियंत्रकों और एक gamescene है:
MainController एक बटन चालू होने
GameViewController में के माध्यम से GameViewController कहता है, gamescene इस तरह से initialised है:
class GameViewController: UIViewController
{
var skView:SKView!
var scene:GameScene!
override func viewDidLoad() {
super.viewDidLoad()
scene = GameScene(size: view.bounds.size)
skView = view as SKView
skView.ignoresSiblingOrder = true
scene.scaleMode = .ResizeFill
scene.viewController = self
skView.presentScene(scene)
}
//with a prepareForSegue deinitialises the scene and skview:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "GameFinished"{
scene.removeAllActions()
scene.removeAllChildren()
scene.removeFromParent()
scene = nil
skView.presentScene(nil)
skView = nil
let target = segue.destinationViewController as MainController
}
}
}
में GameScene, viewController एक संपत्ति है
var viewController:GameViewController? = GameViewController()
segue इस के साथ शुरू हो रहा है:
deinit{
self.removeAllActions()
self.removeAllChildren()
}
फिर भी
उपकरण चलाएं और मेमोरी लीक की जांच करें। https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/InstrumentsQuickStart/InstrumentsQuickStart.html – sangony
मेरे पास यह समस्या 30 मिनट पहले नहीं थी। यह पता चला कि मेरे पास मेमोरी रिसाव था इसलिए मैंने अपना दृश्य और दृश्य गुण कमजोर कर दिया, इसने रिसाव के मुद्दे को हटा दिया लेकिन मुझे यकीन नहीं है कि यह करने का सबसे अच्छा तरीका है या नहीं। –