2013-08-28 3 views
0

Как известно, мы можем изменить имя файла, созданного в Xcode, по опции «Refactor -> Rename» (выбрав имя класса после ключевого слова @interface).Xcode refactor имя файла

Это хорошо работает, но я обнаружил, что он не изменяет/не переименовывает имя класса из комментария заголовка. Я знаю, что это второстепенный, но просто хотел знать, что это поведение по умолчанию в опции «Переименовать» ИЛИ Я делаю что-то неправильно? Что такое решение для отражения его в комментарии заголовка?

Благодаря

ответ

0

Вы должны вручную найти и заменить все вхождения старого файла. Инструменты рекордера Xcode довольно ограничены. Xcode не может автоматически переименовывать маркеры в комментариях.

Если вы часто используете код рефакторинга, вы можете посмотреть AppCode, Objective-C IDE, который имеет лучшие инструменты рефакторинга. AppCode может переименовывать маркеры в комментариях.

0

Рефакторинг ищет только символ в коде ... Это означает, что вы ничего не делаете неправильно.

Если имя является чем-то вроде AMGMainViewTableController, вы можете без проблем найти «найти и заменить» (Edit-> Find-> Find and Replace in Workspace) ... Но я бы избегал делать это с помощью более короткие, менее конкретные имена классов, которые могут быть частью более крупного, например AMGMainViewTable, что противоречило бы с AMGMainViewTableController.

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 + х

Смежные вопросы