正如苹果官方文档所说:
-viewDidUnload在 iOS 6.0 中已弃用。在低内存条件下不再清除视图,因此永远不会调用此方法。
同时,最好-viewDidUnload
从部署目标为 iOS 6.0 或更高版本的项目中删除所有实现。但是一个一个移除它很无聊,尤其是你有数百个控制器和几个项目。
那么,是否有任何脚本或命令可以执行此批处理作业?
正如苹果官方文档所说:
-viewDidUnload在 iOS 6.0 中已弃用。在低内存条件下不再清除视图,因此永远不会调用此方法。
同时,最好-viewDidUnload
从部署目标为 iOS 6.0 或更高版本的项目中删除所有实现。但是一个一个移除它很无聊,尤其是你有数百个控制器和几个项目。
那么,是否有任何脚本或命令可以执行此批处理作业?
我为 Vim 找到了一个命令,我相信它会让你的生活更轻松。;)
在所需的根目录中打开 Vim(通常,它将是您所有控制器文件的根目录),按Shift :进入命令行模式,运行以下命令:
:args **/*.m | argdo %s/^-\ (void)viewDidUnload\_.\{-}}\n^$\n//ge | update
这将取代所有
- (void)viewDidUnload
{
[super viewDidUnload];
...
}
// a blank line here
清空,换句话说,-viewDidUnload
片段将被删除。但请注意,执行后有一个空行。如果您不想包含它,请使用
:args **/*.m | argdo %s/^-\ (void)viewDidUnload\_.\{-}}//ge | update
反而。
注意:当您在项目的根目录中时,这也将包括 lib 文件。我建议转到你的控制器的根目录,然后是所有文件,你会对结果感到满意。;)
之后,您最好检查是否全部-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
实现片段替换为空;
\_.
: 查找任何字符,包括换行符(换行符)。\{-}
:匹配尽可能少(停在第一个}
,例如\{-}h
将停在第一个h
);}
:匹配的最后一项;\n
: 越线;^$\n
: 空行。update
:仅当缓冲区已被修改时才保存修改。