在Xcode中重命名一个类:Refactor ...变灰(禁用)。为什么?

时间:2009-06-14 07:43:31

标签: iphone xcode refactoring

为什么Xcode中的重构... 变灰(禁用)?

我想重命名一个班级。

11 个答案:

答案 0 :(得分:179)

在其头文件中选择类的符号 - 即@interface之后的位。然后应该启用重构内容。

答案 1 :(得分:26)

如果您使用的是Objective-C ++(即将Objective-C与C ++代码混合使用),则在xcode中禁用重构,因为它不支持重构C ++代码。

答案 2 :(得分:7)

如果未保存受影响的文件(很可能是包含您班级的文件),也可能会禁用重构。

答案 3 :(得分:6)

我已经使用Xcode 5年了,重构从来没有正常工作(即使xcode 4.6有重大错误,它会破坏你的源代码!)。

解决方法始终如此(即使在Apple的代码失败的情况下仍然可以100%工作)

  1. 使用shift-command-f查找文件的所有用途
  2. 在搜索设置中选择“替换”
  3. “代替所有”
  4. 为.h文件执行以下操作,并为.m文件重复(如果有的话):
    1. 右键单击原始文件,然后选择“在finder中显示”
    2. 从xcode中删除文件(选择“仅在删除引用时”)
  5. 在Finder中重命名.h(和.m,如果有的话)
  6. 在Xcode中,选择“Product - >(按住Alt) - > Clean Build Folder”
  7. 退出xcode(你通常可以不这样做 - 但请注意:Xcode中还有其他一些主要错误,如果你不这样做就会崩溃)
  8. 重新打开xcode
  9. 将.h和.m拖放回Xcode
  10. 等待几秒钟(Xcode的一些核心方法是异步的 - 允许它破坏你的项目)
  11. 最后,当它似乎无所事事时(你的硬盘不再发出任何噪音):cmd-b重新构建
  12. 使用此方法我有100%的成功率。我刚尝试在最新的xcode中使用Apple的“Refactor - > Rename”进行重构,但它再次失败了!

    (这次出现错误错误:“无法确定语言”,其中一条错误消息是Apple将错误的文字放在适当位置)

答案 4 :(得分:3)

我将在finder上找到我的项目,然后通过获取信息更改文件名。

之后,在 xcode - > Project Navigator 我删除了文件。

最后,我点击课程右键并将文件添加到... ,然后重新添加这些文件。

它对我有用。

答案 5 :(得分:2)

对我来说,我意识到Refactor已被禁用,因为我打开的Xcode项目引用了一个缺少的Base SDK。编辑项目设置,在Build选项卡中将Base SDK设置为您拥有的SDK(就像我这样的iOS 4.2)。这为我启用了Refactor。

答案 6 :(得分:1)

转到您的班级标题文件,找到与此类似的行:

@interface YourClassName

右键单击类符号(例如YourClassName),您应该能够选择Refactor - >重命名...

我刚尝试了这个,它适用于Xcode 5。

答案 7 :(得分:1)

这可能有点晚了,但我偶然发现了这篇文章,因为我无法将我的“ViewController.swift”文件重构为“WhateverViewController.swift”。我尝试在项目导航器中选择文件,然后从顶部菜单中选择“编辑器 -> 重构”,但“重命名”始终显示为灰色。

相反,有效的是从编辑器中选择 ViewController 名称。所以如果你有:

class ViewController: UIViewController {
 // Code here...
}

突出显示“ViewController”字样,然后从菜单中选择重构或右键单击并选择重构 -> 重命名。

希望有帮助...

答案 8 :(得分:0)

此外,您可能会重命名该类的文件名,在xcode外部或通过按住Ctrl键单击文件名然后重命名。 如果filename与类名不匹配,xcode拒绝重构。

答案 9 :(得分:0)

也有这个问题。我试图找到丢失的SDK,保存文件,并寻找上面提到的Objective-C ++代码,修复我的机器所需要的只是重启XCode。

似乎还有一辆小马车。

BTW,这是针对XCode 4.0.1

答案 10 :(得分:-1)

重构有效如果您首先在项目导航器中更改文件名。