NSObject
ビューコントローラを提示:myVC
を画面上に提示し、まだ表示されている場合なぜ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
、デリゲートmyObject
あるコントロールでビューを示すことです。 myObject
は割り当て解除されているため、コントロールは代理人をweak
と参照しているため、コントロールは代理人をもう呼び出すことができません。しかし、私がデリゲートへの強い参照を持っているときには、myObject
が割り当てられ、デリゲートが呼び出されます。しかし、それは代表者のための強い参照を使用するために魚のようなにおいがする。
通常、委任者は弱い参照であるため、動作は想定されています。提示されたコントローラはデリゲートを所有していません! – Eiko
アーキテクチャの問題。オブジェクトはコントローラの所有者ですが、誰もそのオブジェクトを所有していないため、割り当てが解除されます。 – Sulthan
おそらく、誰もMyObjectへの参照を保持していないので...これはUIViewControllerの表示/非表示の方法が間違っています。なぜMyObjectにラップするのですか?任意のメディエーターなしでViewControllerの別のインスタンスから1つのviewControllerを表示する必要があり、委任に関する問題は発生しません – Injectios