|
为什么会出现误改呢?
改方法名原理是通过解析代码文件内容,通过匹配旧方法名称来进行替换,虽然通过代码模型进来进行预判,可以减少误改的机率,但是不能杜绝。
比如我要将下面的方法
- /// 某个类中的方法
- - (nullable NSString *)valueForHTTPHeaderField:(NSString *)field;
复制代码
改名成
- - (nullable NSString *)testMobile:(NSString *)field;
复制代码
自动修改调用处的方法名时,在其他代码块中存在这一段代码
- if (parameters) {
- if (![mutableRequest <font color="#ff0000">valueForHTTPHeaderField</font>:@"Content-Type"]) {
- [mutableRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
- }
复制代码
这时有可能出现误改,将上面的代码改为以下代码
- if (parameters) {
- if (![mutableRequest <font color="#ff0000">testMobile</font>:@"Content-Type"]) {
- [mutableRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
- }
复制代码
误改还原
出现上面的误改后,一般Xcode提示如下错误

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

注意上图中 testMobile 在第几个冒号前,在原始方法名中一样位置的才是与 testMobile 对应的
找到原始方法名,我们就可以将方法名手动改回来:
testMobile --> valueForHTTPHeaderField
- if (parameters) {
- if (![mutableRequest <font color="#ff0000">valueForHTTPHeaderField</font>:@"Content-Type"]) {
- [mutableRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
- }
复制代码
注意: 不要使用Xcode进行全局修改,这样的话你把所有的地方都还原了相当于没改,我们只需要把误改的方改回来即可。
|
|