2016-04-14 103 views
2

Bir düğme içeren bir denetleyici A'ya (UIViewController alt sınıfına) sahip olduğumu ve düğmeye bastığınızda, görünüm denetleyicisini B (alt sınıfı UIViewController) bir segue kullanarak (bu yüzden arayüz oluşturucu kullanarak bağlantı yaptım). Segue tipi Göster.Görünüm denetleyicisini yükleyin ve bir öncekini bellekten kaldırın

B görüntülendiğinde, Asla hiçbir zaman geri dönmeyeceğim, bu yüzden öldürmek, yok etmek, ezmek, sakatlamak istiyorum, böylece değerli küçük baytlar başka şeyler için kullanılabilir. (1) uygulama kök görünümü denetleyicisi değiştirilen en

class ViewControllerB: UIViewController { 
    override func viewDidAppear(animated: Bool) { 
    super.viewDidAppear(animated) 
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
    print("Go away old view controller!!!") 
    appDelegate.window!.rootViewController = self // (1) 
    } 
} 

My kodu: Burada B kodu

class ViewControllerA: UIViewController { 
    deinit { 
    print("I am immortal haha I cannot die!!!") 
    print("This will not be displayed!!!") 
    } 
} 

: Burada

bir kodudur. Bununla birlikte, eski görüntü denetleyicisinin belleğe sızdığı görülüyor, çünkü sınırsızlığının yazdırma mesajı görüntülenmiyor.

Gereksiz bir görünüm denetleyicisinin ve görünümünün kaldırılmasıyla ilgili basit görevi nasıl gerçekleştirebilirim? Teşekkürler ViewControllerA deinitialized asla neden ViewControllerBViewControllerA itibaren ViewControllerB öylesine thats onun presentingViewController değişkeninde ViewControllerA güçlü bir referans tutmak sunmak çok

cevap

0

. Yapmanız gereken şey, app delegates penceresini rootViewController'u doğrudan ViewControllerA'dan değiştirmek ve bu yüzden segue'lerden kurtulmanız gerektiği anlamına gelir.

İlgili konular