Xcode重构文件名

时间:2013-08-28 12:17:47

标签: objective-c xcode

我们知道我们可以通过选项" Refactor - >更改在Xcode中创建的文件的名称。重命名" (通过在@interface关键字后选择类名)。

效果很好,但我发现它不会从标题注释中更改/重命名类名。我知道这是次要的,但只是想知道,这是"重命名"的默认行为。选项还是我做错了什么?什么是在标题评论中反映它的解决方案?

由于

3 个答案:

答案 0 :(得分:0)

您必须手动搜索并替换旧文件名的所有匹配项。 Xcode的重构工具非常有限。 Xcode无法在评论中自动重命名令牌。

如果您经常重构代码,您可能需要查看AppCode,这是一种具有更好重构工具的Objective-C IDE。 AppCode可以在评论中重命名令牌。

答案 1 :(得分:0)

重构只在代码中查找符号...这意味着你没有做错任何事。

如果名称类似于AMGMainViewTableController,您应该可以毫无问题地执行“查找和替换”(编辑 - >查找 - >查找和替换工作区中)......但是我d避免使用较短的,不太具体的类名称来执行此操作,这些类名称可能属于较大的类名称,例如AMGMainViewTable,这会与AMGMainViewTableController冲突。

答案 2 :(得分:0)

我编写了一个bash脚本,您可以将其添加到Xcodes行为中,并在需要时手动执行它。当然,它也可以用于构建阶段。

rename.sh

cd $XcodeWorkspacePath
cd ..

find * -type f \( -name '*.h' -or -name '*.m' -or -name '*.mm' -or -name '*.swift' \) -exec sh -c '
  for file do
    filename=$(basename "$file")
    if egrep -m1 "(\/\/  .*(\.h|\.m{1,2}|\.swift)+ *$)" "$file"
    then
      if grep -Fxq "//  $filename" "$file"
      then
        echo "$file - Correct"
        continue;
      else
        sed -E -i.bak "s/(\/\/  .*(\.h|\.m{1,2}|\.swift)+ *$)/\/\/  $filename/" "$file"
        echo "$filename - Wrong\n^^^^^^^^^^^^^^^^^^^^^^^^^^"
      fi
    fi
  done
' sh {} + &> rename.out 

不要忘记让脚本可执行

chmod + x