В init(child:)
параметр с именем child
ограничен для всего тела функции. Его время жизни заканчивается, когда заканчивается функция. Вот почему print
в deinit
не называется до конца.
Локальная переменная с именем child
не меняет время жизни параметра с именем child
. Но локальная переменная меняет видимость параметра. После строки:
var child: Child? = child
вы больше не можете получить доступ к параметру с именем child
, но его время жизни не изменилось.
Вы пробовали HttpRedirect ? Сначала вам нужно будет установить эту функцию.
Вы можете сделать это, если файлы больше не существуют.
<system.webServer>
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/Default.aspx" responseMode="ExecuteURL" />
</httpErrors>
Вы можете поместить файл с именем App_Offline.htm
в корень любого приложения ASP.NET. Это приведет к тому, что при запросе ЛЮБОЙ страницы .NET будет выведено содержимое htm-файла вместо запрашиваемой страницы. На самом деле это не перенаправление, но это очень простой способ уничтожить весь сайт. Если вам нужно, вы также можете использовать стандартное мета-обновление для отправки любого запроса на новое место (только помните, что не стоит делать это для ASPX-файла на том же сайте).
Я бы написал что-то вроде этого в Global.asax (имейте в виду, что это просто пример, а не готовый к производству код):
Application_BeginRequest(object sender, EventArgs e) {
if(!Request.Url.ToString().ToLowerInvariant().Contains("default.aspx")) {
Response.Redirect("Default.aspx");
}
}
Также учтите, что этот код будет ломать не-ASP.NET запросы, когда приложение работает в интегрированном режиме (в других случаях он будет перенаправлять даже запросы на изображения и тому подобное).