为什么会出现误改呢?
改方法名原理是通过解析代码文件内容,通过匹配旧方法名称来进行替换,虽然通过代码模型进来进行预判,可以减少误改的机率,但是不能杜绝。
比如我要将下面的方法
/// 某个类中的方法
- (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提示如下错误
这时你就需要手动还原代码,需要用到一个很重要文件(MethodReplaceList.txt
)这个文件存放在你所选的项目的路径下,是新旧方法名对照表,这时你需要打此文件搜索 testMobile
来查找原始名称
注意上图中 testMobile
在第几个冒号前,在原始方法名中一样位置的才是与 testMobile
对应的
找到原始方法名,我们就可以将方法名手动改回来:
testMobile
--> valueForHTTPHeaderField
if (parameters) {
if (![mutableRequest valueForHTTPHeaderField:@"Content-Type"]) {
[mutableRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
}
注意
: 不要使用Xcode进行全局修改,这样的话你把所有的地方都还原了相当于没改,我们只需要把误改的方改回来即可。