Почему это свойство viewController не предотвращает освобождение объекта?
Пожалуйста, рассмотрите следующий код:
class Module {
let viewController = ExampleViewControler()
deinit {
print("deinit")
}
}
class ExampleViewControler: UIViewController {}
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
let mod = Module()
let navController = UINavigationController(rootViewController: mod.viewController)
window?.rootViewController = navController
window?.makeKeyAndVisible()
return true
}
ViewController сохраняется navController. Почему deinit вызывается в экземпляре модуля? Разве это не должно быть сохранено, так как его собственность сохранена?
В любом случае, я хотел бы сохранить объект в активном состоянии, так как контроллер представления активен. Как я могу этого достичь?
Спасибо!
1 ответ
Решение
mod
переменная не сохраняется никем. Это внутренняя переменная функции. Как только функция выходит из mod
освобождается. Никто не сохраняет это.