gpt4 book ai didi

ios - 从项目的 View Controller 中删除所有 -viewDidUnload 的方法

转载 作者:行者123 更新时间:2023-11-28 22:25:50 26 4
gpt4 key购买 nike

正如 Apple 的官方文档所说:

-viewDidUnload is deprecated in iOS 6.0. Views are no longer purged under low-memory conditions and so this method is never called.

同时,最好从部署目标为 iOS 6.0 或更高版本的项目中删除所有 -viewDidUnload 实现。但是一个一个地删除它很无聊,尤其是你有数百个 Controller 和几个项目。

那么,是否有任何脚本或命令可以执行此批处理作业?

最佳答案

我想出了一个 Vim 命令,我相信它会让你的生活更轻松。 ;)

在所需的根目录中打开 Vim(通常,它将是所有 Controller 文件的根目录),按 Shift : 进入命令行模式,运行以下命令:

:args **/*.m | argdo %s/^-\ (void)viewDidUnload\_.\{-}}\n^$\n//ge | update

这将替换所有

- (void)viewDidUnload
{
[super viewDidUnload];
...
}
// a blank line here

清空,换句话说,-viewDidUnload 片段将被删除。 但是注意,implement后面有一个空行。如果您不想包含它,请使用

:args **/*.m | argdo %s/^-\ (void)viewDidUnload\_.\{-}}//ge | update

相反。

注意:当您在项目的根目录中时,这也将包括 lib 文件。我建议转到 Controller 的根目录,然后是所有文件,您会对结果感到满意。 ;)


提示:

之后,你最好检查是否所有的-viewDidUnload都被删除了,在你想要的根目录的终端运行下面​​的命令:

$ find . -type f -iname "*.m" -exec grep -i "viewDidUnload" {} +

它应该没有输出。否则,一些目标会丢失,您可以轻松找到它,因为它会列出所有未正确管理的文件,然后手动将其删除(如果您的 - (void)viewDidLoad 可能会发生这种情况-(void)viewDidLoad 没有空格或其他内容)。

终于可以运行了

$ git diff -b --color-words

查看结果。好好享受! ;)


进一步阅读命令

  • args **/*.m:设置 arglist 以包含当前目录及其子目录中的所有 .m 文件;
  • argdo:对 arglist 中的所有参数运行以下命令;
  • %s/^-\(void)viewDidUnload\_.\{-}}\n^$\n//ge: Vim RegEx 替换 -viewDidUnload 将代码片段清空;
    • \_.:查找包括行尾(linebreak)在内的任何字符。
    • \{-}:尽可能少的匹配(在第一个处停止,例如\{-}h会在第一个 h);
    • :最后匹配的项目;
    • \n:换行;
    • ^$\n:空白行。
  • update:仅当缓冲区已被修改时才保存修改。

引用

关于ios - 从项目的 View Controller 中删除所有 -viewDidUnload 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19062517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com