source

Xcode에서 클래스 이름 바꾸기:리팩터...회색으로 표시됩니다(비활성화됨).왜요?

nicesource 2023. 5. 9. 22:48
반응형

Xcode에서 클래스 이름 바꾸기:리팩터...회색으로 표시됩니다(비활성화됨).왜요?

리팩터는 왜...Xcode에서 회색으로 표시(비활성화)되었습니까?

클래스 이름을 바꾸고 싶습니다.

파일에서 합니다. "" " " " " " " 에 있는 비트를 선택합니다."@interface그런 다음 리팩터링 장치를 활성화해야 합니다.

Objective-C++(즉, Objective-C를 C++ 코드와 혼합)를 사용하는 경우 C++ 코드의 리팩터링을 지원하지 않으므로 xcode에서 리팩터링이 비활성화됩니다.

영향을 받는 파일(대부분 클래스가 있는 파일)이 저장되지 않은 경우 리팩터가 비활성화될 수도 있습니다.

저는 Xcode를 5년째 사용하고 있으며 리팩토링이 제대로 작동한 적이 없습니다(xcode 4.6에도 소스 코드가 손상될 수 있는 주요 버그가 있습니다!).

해결 방법은 항상 있었습니다(애플의 코드가 실패하는 경우에도 여전히 100% 작동).

  1. shift-command-f를 사용하여 파일의 모든 용도를 찾습니다.
  2. 검색 설정에서 "바꾸기"를 선택합니다.
  3. "모두 바꾸기"
  4. 파일에 하고 .m 파일(있는 에 대해 .h 파일에는 .m 파일이 있습니다.
    1. 원본 파일을 마우스 오른쪽 단추로 클릭하고 "찾기에 표시"를 선택합니다.
    2. xcode에서 파일 삭제(요청 시 "참조 삭제만" 선택)
  5. Finder에서 .h(및 .m(있는 경우)의 이름을 바꿉니다.
  6. Xcode에서 "Product -> (Hold down Alt) -> Clean Build Folder"를 선택합니다.
  7. quit xcode (보통 이것을 하지 않아도 벗어날 수 있습니다 - 하지만 참고: Xcode에는 이것을 하지 않으면 스스로 충돌하는 몇몇 다른 주요 버그가 있습니다)
  8. xcode 다시 열기
  9. .h 및 .m을 다시 Xcode로 드래그/드롭합니다.
  10. 몇 초 동안 기다립니다(Xcode의 핵심 메서드 중 일부는 비동기식이므로 프로젝트가 손상될 수 있습니다).
  11. 마지막으로 아무것도 하지 않는 것처럼 보일 때(하드 디스크에서 더 이상 소음이 발생하지 않을 때): cmd-b를 다시 빌드합니다.

저는 이 방법으로 100%의 성공률을 가지고 있습니다.방금 애플의 최신 xcode의 "리팩터 -> 이름 바꾸기"로 리팩터링을 시도했는데 또 실패했습니다!

(이번에는 "언어를 결정할 수 없습니다."라는 잘못된 오류와 함께 애플이 잘못된 텍스트를 배치한 오류 메시지 중 하나입니다.)

파인더에서 프로젝트로 이동한 다음 get info로 파일 이름을 변경합니다.

그 후 xcode -> Project Navigator에서 파일을 삭제합니다.

마지막으로 클래스를 마우스 오른쪽 단추로 클릭하고 파일을 ...에 추가한 다음 이 파일을 다시 추가합니다.

그것은 나에게 효과가 있었다.

저는 제가 열었던 Xcode 프로젝트가 누락된 Base SDK를 참조하고 있었기 때문에 Refactor가 비활성화되었다는 것을 깨달았습니다.프로젝트 설정을 편집하고 빌드 탭에서 기본 SDK를 사용자가 가지고 있는 것으로 설정합니다(나처럼 iOS 4.2였습니다).이것은 저에게 리팩터를 가능하게 했습니다.

또한 xcode 외부에서 또는 ctrl 키를 누른 후 파일 이름을 변경하여 클래스의 파일 이름을 바꿀 수도 있습니다.xcode는 파일 이름이 클래스 이름과 일치하지 않을 경우 리팩터를 거부합니다.

클래스의 헤더 파일로 이동하여 다음과 유사한 행을 찾습니다.

@interface YourClassName

클래스 기호(예: 귀하의 클래스 이름)를 마우스 오른쪽 버튼으로 클릭하면 리팩터 -> 이름 바꾸기...를 선택할 수 있습니다.

저는 방금 이것을 시도했고 그것은 Xcode 5에서 작동합니다.

조금 늦었을 수도 있지만 "ViewController.swift" 파일을 "WhyViewController.swift"로 리팩터링할 수 없어서 이 게시물을 우연히 발견했습니다.Project Navigator에서 파일을 선택한 다음 상단 메뉴에서 "Editor -> Refactor"를 선택하려고 했지만 'Rename'은 항상 회색으로 표시됩니다.

대신 편집기에서 ViewController 이름을 선택하는 것이 효과적이었습니다.그래서 만약 당신이 가지고 있다면:

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

"ViewController" 단어를 강조 표시한 다음 메뉴에서 Refactor를 선택하거나 Refactor -> rename을 마우스 오른쪽 단추로 클릭하여 선택합니다.

그게 도움이 되길...

이 문제도 있었습니다.누락된 SDK를 찾고, 파일을 저장하고, 위에서 언급한 것처럼 Objective-C++ 코드를 찾다가 XCode를 재부팅하면 문제가 해결됩니다.

아직도 약간 버그가 있는 것 같습니다.

참고로 XCode 4.0.1용입니다.

리팩토링 작동 프로젝트 탐색기에서 파일 이름을 처음 변경하는 경우.

언급URL : https://stackoverflow.com/questions/992381/rename-a-class-in-xcode-refactor-is-grayed-out-disabled-why

반응형