的NSObject
呈現一個視圖控制器:爲什麼NSObject在呈現其UIViewController時會被釋放?
class myObject: NSObject {
var myVC = UIViewController()
func present() {
let rootVC = UIApplication.sharedApplication().keyWindow!.rootViewController
rootVC.presentViewController(myVC, animated: animated, completion: nil)
}
}
爲什麼myObject
得到釋放(DEINIT稱)時myVC
呈現在屏幕上仍清晰可見?它不應該保持分配,因爲myVC
是它的財產嗎?
更新:我面對的有效問題是myVC
顯示了一個代表爲myObject
的控件的視圖。因爲myObject
被釋放,控件無法再調用委託,因爲我將委託作爲weak
進行引用。但是,當我強烈提及代表myObject
保持分配並且代表被調用時。但它爲代表使用了一個強有力的參考文件而聞起來很可疑。
代表通常是弱引用,因此行爲是預期的。呈現的控制器不擁有代表! – Eiko
體系結構問題。您的對象是您的控制器的所有者,但沒有人擁有該對象,因此它將被釋放。 – Sulthan
可能是因爲沒有人持有對MyObject的引用......這是呈現/解散UIViewController的錯誤方式,爲什麼將它包裝到MyObject中?你應該從另一個ViewController實例中顯示一個viewController而沒有任何介體,並且你不會有任何代理問題 – Injectios