Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 内存使用率随着每个阶段的增加而增加_Ios_Swift_Sprite Kit_Segue_Unwind Segue - Fatal编程技术网

Ios 内存使用率随着每个阶段的增加而增加

Ios 内存使用率随着每个阶段的增加而增加,ios,swift,sprite-kit,segue,unwind-segue,Ios,Swift,Sprite Kit,Segue,Unwind Segue,我有两个视图控制器,一个是时间线,另一个是用于创建的。在第二个视图控制器中,我有一个子视图。此子视图是一个SKView。现在,每次我使用它,它都会增加2mb的内存使用量(在真实设备上),但当我解开它时,内存使用量保持不变。 所以它是这样的:我开始使用12mb,然后得到14-15mb。放卷后,它保持在14-15mb左右。在第二段之后,它变成17mb。。。等等 这是时间线控制器中使用的代码: @IBAction func createButtonAct(sender: AnyObject) {

我有两个视图控制器,一个是时间线,另一个是用于创建的。在第二个视图控制器中,我有一个子视图。此子视图是一个
SKView
。现在,每次我使用它,它都会增加2mb的内存使用量(在真实设备上),但当我解开它时,内存使用量保持不变。
所以它是这样的:我开始使用12mb,然后得到14-15mb。放卷后,它保持在14-15mb左右。在第二段之后,它变成17mb。。。等等

这是时间线控制器中使用的代码:

@IBAction func createButtonAct(sender: AnyObject) {

    self.performSegueWithIdentifier("create", sender: self)


}

@IBAction func unwindFromCreation(segue: UIStoryboardSegue) {


}




// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if segue.identifier == "create"{
        let vc = segue.destinationViewController as! CreateViewController
        if vc.currCountry == nil || vc.currCountry != self.currCountry{
        vc.currCountry = self.currCountry
        }

    }


}
这是创建视图控制器中的代码:

class CreateViewController: UIViewController, UITextViewDelegate {

@IBOutlet weak var bubbleView: SKView!

@IBOutlet var arrow: UIButton!

var ref: Firebase!


let categories = CatsAndColors.categories


@IBOutlet var doneButton: UIButton!

@IBOutlet var titleField: UITextField!

@IBOutlet var descriptionView: KMPlaceholderTextView!

var choosedCat: String!

var selectedCats: NSMutableArray!

var currCountry:String!

var tap: UITapGestureRecognizer!

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(true)

    UIApplication.sharedApplication().statusBarStyle = .Default
    UIView.animateWithDuration(0.5, animations: { () -> Void in
        self.arrow.transform = CGAffineTransformMakeRotation(3.14159)
    })



    titleField.addTarget(self, action: "textFieldDidChange:", forControlEvents: UIControlEvents.EditingChanged) 

    titleField.addTarget(self, action: "textFieldDidBegin:", forControlEvents: UIControlEvents.EditingDidBegin)

    titleField.addTarget(self, action: "textFieldDidEnd:", forControlEvents: UIControlEvents.EditingDidEnd)
    // the targets get removed in viewWillDisappear
    selectedCats = NSMutableArray()

}



override func viewDidLoad() {
    super.viewDidLoad()

    ref = Firebase(url: "https://blabber2.firebaseio.com")

    self.doneButton.enabled = false

    doneButton.setBackgroundImage(UIImage(named: "Done button inactive"), forState: .Disabled)

    doneButton.setTitleColor(UIColor(netHex: 0xF6F6F6), forState: .Disabled)

    doneButton.setTitleColor(UIColor.whiteColor(), forState: .Normal)

    self.setupBubbles()

    self.descriptionView.delegate = self

}

func setupBubbles(){



    let floatingCollectionScene = ChooseBubblesScene(size: bubbleView.bounds.size)

    // floatingCollectionScene.scaleMode = .AspectFit


    /*let statusBarHeight = CGRectGetHeight(UIApplication.sharedApplication().statusBarFrame)
    let titleLabelHeight = CGRectGetHeight(self.tibleLabel.frame)*/

    bubbleView.presentScene(floatingCollectionScene)



    for (category, color) in categories {

        let node = ChooseBubbleNode.instantiate()
        node!.vc = self
        node!.fillColor = SKColor(netHex: color)
        node!.strokeColor = SKColor(netHex: color)
        node!.labelNode.text = category

        floatingCollectionScene.addChild(node!)

    }


}
...
CatSandColor结构如下所示:

struct CatsAndColors{

static var categories = ["Crime":0x5F5068, "Travel":0xFBCB43, "Religion":0xE55555, "Tech":0xAF3151, "Economy":0x955BA5, "Games":0xE76851, "Climate":0x6ED79A, "Books":0xE54242, "History":0x287572, "Clothes":0x515151, "Sports":0x4AB3A7, "Food":0xD87171, "Politics":0x5FA6D6, "Music":0xDD2E63, "Tv-shows":0x77A7FB]

 }

可能您在视图控制器之间创建了某种保留循环。
如果两个视图控制器彼此都有引用,则尝试将其中一个引用声明为


有关该主题的更多信息,请阅读。

我解决了这个问题,它是sknode文件中的强引用


谢谢您的回答。

您能添加代码吗?Sprite kit是一个非常容易泄露的工具,如果您能,我建议您将场景作为一个单独的场景使用,它可能会解决您的问题problem@MarcusRossel是的:)我不这么认为,或者你在我添加的代码中看到了什么吗?:)