正如我们所知,我们可以通过选项“Refactor -> Rename”(通过在@interface 关键字之后选择类名)来更改在 Xcode 中创建的文件的名称。
它运作良好,但我发现它不会从标题注释中更改/重命名类名。我知道这是次要的,但只是想知道,这是“重命名”选项的默认行为还是我做错了什么?在标题评论中反映它的解决方案是什么?
谢谢
正如我们所知,我们可以通过选项“Refactor -> Rename”(通过在@interface 关键字之后选择类名)来更改在 Xcode 中创建的文件的名称。
它运作良好,但我发现它不会从标题注释中更改/重命名类名。我知道这是次要的,但只是想知道,这是“重命名”选项的默认行为还是我做错了什么?在标题评论中反映它的解决方案是什么?
谢谢
您必须手动搜索和替换所有出现的旧文件名。Xcode 的重构工具非常有限。Xcode 不能自动重命名注释中的标记。
如果您经常重构代码,您可能需要查看AppCode,这是一个具有更好重构工具的 Objective-C IDE。AppCode 可以重命名注释中的标记。
重构只在代码中寻找符号......这意味着你没有做错任何事情。
AMGMainViewTableController
如果名字类似于可能是较大名称的一部分的名称,例如 与AMGMainViewTable
冲突AMGMainViewTableController
。
我编写了一个 bash 脚本,您可以将其添加到 Xcodes 行为中并在需要时手动执行它。当然,它也可以用于构建阶段。
重命名.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