У меня есть область действия
scope<MyObject> {
scoped { Presenter() }
}
Затем, когда я получаю докладчика, это работает.
val presenter = myObject.scope.get<Presenter>(Presenter::class.java)
Аналогичным образом, когда я могу назначить переменную области действия, затем получить докладчика.
val myScope = myObject.scope
val presenter = myScope.get<Presenter>(Presenter::class.java)
Если мы закроем его, это все в порядке
val presenter = myObject.scope.get<Presenter>(Presenter::class.java)
myObject.scope.close()
val presenter2 = myObject.scope.get<Presenter>(Presenter::class.java)
Однако, если я назначу другую переменную области действия и закрою ее, произойдет сбой.
val myScope = myObject.scope
val presenter = myScope.get<Presenter>(Presenter::class.java)
myScope.close()
val presenter2 = myScope.get<Presenter>(Presenter::class.java) // Crash here.
Точно так же, если я сделаю это, он тоже будет sh
val myScope = myObject.scope
val presenter = myScope.get<Presenter>(Presenter::class.java)
myScope.close()
myScope.getOrCreateScope() // Crash here
val presenter2 = myScope.get<Presenter>(Presenter::class.java)
Я понимаю, что после close()
область больше не сможет предоставить presenter
. Я просто не понимаю, почему после myObject.scope.close()
, myObject.scope
все еще может предоставить докладчик? (и тот же ведущий)
val presenter = myObject.scope.get<Presenter>(Presenter::class.java)
myObject.scope.close()
val presenter2 = myObject.scope.get<Presenter>(Presenter::class.java)
// presenter1 == presenter2