Xcode重构选项置灰:如何实现方法参数分行重构
解决Xcode重构选项置灰及方法参数分行问题
一、先排查重构选项置灰的原因
- 保证代码能正常编译:Xcode的重构功能完全依赖代码语法正确、项目可编译,只要有语法错误或者编译失败,大部分重构选项都会直接置灰。
- 选对光标位置:把光标放在方法名上,别放在参数中间或者其他无关位置,不然Xcode识别不到要重构的对象。
- 检查项目配置:Swift项目要确保开启了
Enable Refactoring(在Build Settings的Swift Compiler - General栏目里);OC项目可以试试Product > Clean Build Folder后重新让Xcode建立索引,索引异常也会导致重构功能失效。
二、实现方法参数单独占一行的替代方案
要是重构选项还是没法用,用下面这些方法快速搞定参数分行:
1. 用Xcode自带的代码格式化
选中要调整的方法代码块,按下Control + I(或者右键选「Structure > Re-Indent」),只要你提前配置过代码风格,就能自动把参数拆成每行一个:
- 打开
Xcode > 设置 > 文本编辑 > 代码编辑,点「缩进」选项,在Swift/Objective-C的缩进设置里,找到「Function parameters」,设置成「Each parameter on a new line」(不同Xcode版本路径可能有点不一样,找类似选项就行)。
2. 查找替换批量调整
如果有一堆方法要改,用Xcode的全局查找替换(Command + Shift + F)更高效:
- 以Swift为例,要把
func test(param1: Int, param2: String, param3: Bool)改成参数分行的格式,用正则查找,\s*,替换成,\n\t就行。记得先选中目标文件或代码范围,别全局瞎替换。
3. 自定义代码片段省事儿
先写一个参数分行的示例方法,选中它右键选「Create Code Snippet」,设置个快捷触发词(比如func-multi),以后写方法的时候输入触发词,直接就能插入格式正确的模板。
三、额外小提示
要是上面的方法都不管用,试试重启Xcode,或者重置Xcode偏好设置(终端输入defaults delete com.apple.dt.Xcode,重启Xcode会重置所有设置),有时候Xcode的索引抽风也会导致功能异常。
内容的提问来源于stack exchange,提问作者Filippo
相关产品推荐
相关产品推荐

