误改的解决办法

为什么会出现误改呢?

改方法名原理是通过解析代码文件内容,通过匹配旧方法名称来进行替换,虽然通过代码模型进来进行预判,可以减少误改的机率,但是不能杜绝。

比如我要将下面的方法


/// 某个类中的方法
- (nullable NSString *)valueForHTTPHeaderField:(NSString *)field;

改名成


- (nullable NSString *)testMobile:(NSString *)field;

自动修改调用处的方法名时,在其他代码块中存在这一段代码


if (parameters) {
  if (![mutableRequest valueForHTTPHeaderField:@"Content-Type"]) {
            [mutableRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        }

这时有可能出现误改,将上面的代码改为以下代码

    
if (parameters) {
   if (![mutableRequest testMobile:@"Content-Type"]) {
            [mutableRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        }

误改还原

出现上面的误改后,一般Xcode提示如下错误
IMG

这时你就需要手动还原代码,需要用到一个很重要文件(MethodReplaceList.txt)这个文件存放在你所选的项目的路径下,是新旧方法名对照表,这时你需要打此文件搜索 testMobile 来查找原始名称

IMG

注意上图中 testMobile 在第几个冒号前,在原始方法名中一样位置的才是与 testMobile 对应的

找到原始方法名,我们就可以将方法名手动改回来:

testMobile --> valueForHTTPHeaderField


if (parameters) {
  if (![mutableRequest valueForHTTPHeaderField:@"Content-Type"]) {
            [mutableRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        }

注意: 不要使用Xcode进行全局修改,这样的话你把所有的地方都还原了相当于没改,我们只需要把误改的方改回来即可。