[iphone] Xcode에서 클래스 이름 바꾸기 : Refactor…가 회색으로 표시됩니다 (비활성화 됨). 왜?

Refactor … 가 Xcode에서 회색으로 표시 (비활성화) 된 이유는 무엇 입니까?

수업 이름을 바꾸고 싶습니다.



답변

헤더 파일에서 클래스의 심볼을 선택합니다 @interface. 즉 . 그런 다음 리팩토링 항목을 활성화해야합니다.


답변

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


답변

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


답변

저는 Xcode를 5 년 동안 사용해 왔으며 리팩토링이 제대로 작동하지 않았습니다 (xcode 4.6에도 소스 코드를 손상시키는 주요 버그가 있습니다!).

해결 방법은 항상 (Apple의 코드가 실패하는 경우에도 여전히 100 % 작동합니다)

  1. 파일의 모든 용도를 찾으려면 shift-command-f를 사용하십시오.
  2. 검색 설정에서 “바꾸기”를 선택하십시오
  3. “전부 교체”
  4. .h 파일에 대해 다음을 수행하고 .m 파일에 대해 반복합니다 (있는 경우).
    1. 원본 파일을 마우스 오른쪽 버튼으로 클릭하고 “파인더에 표시”를 선택합니다.
    2. xcode에서 파일 삭제 (요청시 “참조 만 삭제”선택)
  5. Finder에서 .h (및있는 경우 .m) 이름 변경
  6. Xcode에서 “제품-> (Alt 누르고 있음)-> 빌드 폴더 정리”를 선택하십시오.
  7. xcode를 종료합니다 (보통이 작업을 수행하지 않아도 벗어날 수 있습니다. 그러나 참고 : Xcode에는이 작업을 수행하지 않으면 자체적으로 충돌하는 다른 주요 버그가 있습니다)
  8. xcode 다시 열기
  9. .h 및 .m을 Xcode로 다시 끌어다 놓습니다.
  10. 몇 초 기다리십시오 (Xcode의 핵심 메서드 중 일부는 비동기식이므로 프로젝트가 손상 될 수 있음)
  11. 마지막으로 아무 작업도하지 않는 것 같으면 (하드 디스크에서 더 이상 소음이 발생하지 않음) cmd-b to re-build

이 방법으로 성공률이 100 %입니다. 방금 최신 xcode에서 Apple의 “Refactor-> Rename”으로 리팩토링을 시도했지만 실패했습니다.

(이번에는 잘못된 오류 : “언어를 확인할 수 없음”, Apple이 잘못된 텍스트를 입력 한 오류 메시지 중 하나)


답변

finder에서 내 프로젝트로 이동 한 다음 정보가져 와서 파일 이름을 변경합니다 .

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

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

그것은 나를 위해 일했습니다.


답변

저에게는 내가 열어 본 Xcode 프로젝트가 누락 된 Base SDK를 참조하고 있었기 때문에 Refactor가 비활성화되었음을 깨달았습니다. 프로젝트 설정을 편집하고 빌드 탭에서 기본 SDK를 보유하고있는 것으로 설정합니다 (예 : iOS 4.2). 이것은 나를 위해 리팩터링을 활성화했습니다.


답변

또한 xcode 외부에서 또는 Ctrl 키를 누른 채로 파일 이름을 클릭 한 다음 이름을 변경하여 클래스의 파일 이름을 변경할 수 있습니다. xcode는 파일 이름이 클래스 이름과 일치하지 않으면 리팩터링을 거부합니다.