Использование памяти увеличивается с каждым переходом к модальному vc

У меня есть два контроллера представления, один - временная шкала, второй - для создания. В этом втором контроллере представления у меня есть дополнительное представление. Это дополнительное представление является SKView. Теперь каждый раз, когда я перехожу к нему, он увеличивает использование памяти на 2 МБ (на реальном устройстве), но использование памяти остается прежним, когда я раскручиваю его.
Итак, вот так: я начинаю с использования 12 МБ. , то получается 14-15мб. После раскрутки остается около 14-15мб. После второго перехода к нему становится 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!)

    }


}
...

Структура котов и цветов выглядит так:

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]

 }

person telip007    schedule 25.02.2016    source источник
comment
Не могли бы вы добавить код?   -  person Marcus Rossel    schedule 25.02.2016
comment
Набор спрайтов - настоящая проблема для утечек, если бы вы могли порекомендовать вам использовать сцену как синглтон, это может решить вашу проблему.   -  person Ulysses    schedule 25.02.2016
comment
@MarcusRossel Я сделал :)   -  person telip007    schedule 25.02.2016


Ответы (2)


Возможно, вы создали какой-то цикл сохранения между вашими контроллерами представления.
Если оба контроллера представления содержат ссылку друг на друга, попробуйте объявить одну из ссылок как weak.

Для получения дополнительной информации по этой теме прочитайте Разрешение циклов сильных ссылок между экземплярами класса.

person Marcus Rossel    schedule 25.02.2016
comment
Я так не думаю, или вы видите что-то в коде, который я добавил? :) - person telip007; 25.02.2016

Я решил проблему, это была сильная ссылка в файле sknode.

Спасибо за ваши ответы.

person telip007    schedule 26.02.2016