有没有一种简单的方法来替换Xcode中已弃用的方法调用?

时间:2012-12-17 22:33:52

标签: xcode refactoring automated-refactoring

因此,iOS 6弃用presentModalViewController:animated:dismissModalViewControllerAnimated:,并分别用presentViewController:animated:completion:dismissViewControllerAnimated:completion:替换它们。我想我可以使用find-replace来更新我的应用程序,虽然使用present*方法会很尴尬,因为要呈现的控制器每次都不同。我知道我可以使用正则表达式来处理这种情况,但是我对使用正则表达式尝试在1000 + -files-big应用程序中使用它感到不舒服。

所以我想知道:Xcode是否有一些神奇的“更新已弃用的方法”命令?我的意思是,我已经描述了我上面的特殊情况,但总的来说,每次操作系统发布时都会出现弃用现象。有没有更好的方法来更新应用程序,而不仅仅是使用find-replace?

2 个答案:

答案 0 :(得分:0)

您可能对Program Transformation Systems感兴趣。

这些工具可以使用模式导向的源到源转换自动修改源代码(“如果你看到这个源代码级模式,请用替换 源级模式“)在代码结构而不是文本上运行。正确完成后,这些转换可以是可靠且语义正确的,并且它们比导航和破坏纳米级实际树结构的低级程序代码更容易编写。

使用这些工具并不容易;这些工具必须知道如何将感兴趣的语言解析为编译器数据结构(例如,ObjectiveC),处理模式,以及从修改的结构重新生成可编译的源代码。即使使用基本的转换引擎,也有人需要为感兴趣的语言方言仔细定义解析器(和解析器!)。即使你有这样的解析器/解析器,也需要时间来学习如何使用这样的。如果您需要进行的更改是“常规”(在程序转换意义上,而不是正则表示意义上)并且广泛存在(如您所看到的那样),这是值得的。

我们的DMS软件再造工具包有一个ObjectiveC前端,可以进行这样的转换。

答案 1 :(得分:-1)

没有像这样的魔法