Круг удержания делегата при использовании слабых

Я не рекомендую использовать отсутствующий обработчик файла (или CF onMissingTemplate). В противном случае IIS вернет код состояния 404, и ваша страница не будет проиндексирована поисковыми системами.

Что вам нужно сделать, это определить уникальный шаблон префикса, который вы хотите использовать, и создать правило перезаписи web.config. Пример. Я иногда использую «/ detail _» + id для страниц с подробными сведениями о продукте.

Если вы не хотите, вам не нужно сохранять подкаталог «/ blog». Добавьте следующее правило перезаписи в файл web.config в корневом каталоге веб-сайта, чтобы принять что-либо после /blog/ в URL-адресе и интерпретировать его как /?blogtitle=[everythingAfterBlog]. (Я добавил дополнительное предложение в случае, если вы хотите продолжать поддерживать ссылки /blog/article.cfm.)

<rules>
    <rule name="Blog" patternSyntax="ECMAScript" stopProcessing="true">
        <match url="blog/(.*)$" ignoreCase="true" />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
            <add input="{SCRIPT_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{PATH_INFO}" pattern="^.*(blog/article.cfm).*$" negate="true" />
        </conditions>
        <action type="Rewrite" url="/?blogtitle={R:1}" appendQueryString="true" />
    </rule>
</rules>

Я рекомендую использовать «301 Redirect» для нового URL-адреса, ориентированного на SEO. Я также советую использовать дефис (-) между фрагментами слов и гарантировать, что случай символа согласован (т. Е. В нижнем регистре), или вы можете получить наказание за «дублированный контент».

0
задан PaFi 5 March 2019 в 06:43
поделиться

1 ответ

Поскольку вы используете слабый делегат, это никоим образом не приведет к сохранению цикла.

Я думаю, что ваш viewController не освобождается, потому что ваш viewController все еще находится в стеке вашей навигации.

Попробуйте удалить все viewControllers из стека навигации, и тогда ваш блок освобождения будет работать как обычно.

Попробуйте следующий код в зависимости от ваших требований (присутствует / нажмите), когда вы возвращаетесь к своему homeViewController:

self.navigationController?.popToRootViewController(animated: true)

self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)

Редактировать:

Убедитесь, что ваш протокол относится к типу классов, тогда будет работать только слабая ссылка.

protocol LoadImagePickerManager: class {

}

В вашем PickerManager попытайтесь отклонить, используя следующий код, он перенаправит вас на контроллер rootview, но вы можете снова нажать или представить требуемый контроллер представления:

self.view.window?.rootViewController?.dismiss(animated: false, completion: nil)
0
ответ дан HSAM 5 March 2019 в 06:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: